c++ 복사 생성자에 대해
안녕하세요. 항상 수고가 많으십니다.
다름이 아니라 explicit 키워드를 보다가
혼자 테스트 해보던 도중
class MyClass
{
public:
MyClass(){}
MyClass(int num) : imember2(num){}
MyClass(char cnum) : cmember(cnum){}
MyClass(double dnum) : dmember(dnum){}
private:
int imember;
int imember2;
double dmember;
char cmember;
};
void main()
{
MyClass temp = 10; //가능 (생성자를 묵시적으로 호출) MyClass temp(10) 과 동일
MyClass test();
test = 20;
test = 'z';
test = 4568.21;
}
생성자에 정의한 타입만 들어가며 생성자에 쓴 초기화 리스트 항목으로만 들어갑니다.
int변수를 두개 선언하고 생성자에는 두번째 int 변수에 넣은다고 정의해 놓으니까 그쪽으로만 들어가더군요
처음에 클래스 생성하면
기본생성자 , 복사 생성자, 복사대입연산자, 연산자 오버로딩은 대강 아는데
예제에는 객체에서 객체를 이라는것만 나와 있는데 이게 어떤 원리로 되는건가요?
생성자가 암묵적 호출되는건 알겠는데 위의 예제는 이미 디폴트 생성자로 그냥
멤버변수가 초기화 되지 않은채로 그냥 값의 대입인데
생성자에 형식과 갯수에 맞게 대입연산자도 뭔가가 생기나요?
읽어주셔서 감사합니다.
댓글 달기