클래스 생성자 관해서 질문이 있는데요

infoefficiency의 이미지

예를 들어서
class func({
public:
func(){}
func(......){.......}

.....
};

연산자 오버로딩 관련한 예제인데요

처음에 func(){} 같은 생성자를 항상 선언하던데 선언하는 이유가 뭔지 정확하게 잘 모르겠어요 ...ㅠㅠ

설명좀 부탁드립니다

감사합니다

infoefficiency의 이미지

class Complex{
private:
double real;
double image;

public:
Complex(){}
Complex(double r, double i) : real(r), image(i){}
...

해서 하는 클래스 인데요 중간에(real(r) 앞 )콜론이 왜 쓰인건지도 모르겠네요
기초가 너무 부족하네요 ㅠㅠ

klara의 이미지

콜론 초기화라고 합니다. 구글에서 한번 찾아보세요.

klara의 이미지

생성자를 하나도 선언하지 않으면 컴파일러가 기본으로 넣어주는게 func() {} 같은 기본 생성자입니다.
그런데 생성자를 한개라도 선언을 하면 기본 생성자는 자동으로 들어가지 않습니다.
이경우에 기본 생성자가 필요하다면 예제처럼 별도로 선언해주어야 합니다.