: 직접 초기화만 가능하게 하는 생성자 .
: 인자가 있는 객체를 만들어서 ,
생성자(인자) call하는 형식이 아닌,
인자를 대입해보자.
ex) CObject obj = 4;
-> 가능한 구조임.
0) 복사 초기화를 해보아라 -> 객체 명 = 인자 타입에 맞는 리터럴 상수
가) explicit 키워드를 사용해 , 직접초기화만 가능한지 확인하라.
나) explicit 키워드를 지우고,
foo(CObject _obj) 함수를 만들고, foo( 4 ); 가능한지 확인하라.
다) foo( 미리 생성된 객체를 넣어보자. )
-> 이때는 복사 생성자가 호출됨을 확인할 수 있음.
결론
: 컴파일러는 암시적으로 복사 초기화를 가능케함.
explicit 키워드를 사용하면 , 암묵적인 복사 초기화를 방지함 .
string s = "hello world"
vector<int> v = 4; // error
shared_ptr<int> p = new int; // error;
: 위의 3개를 만들어서 확인해보아라.