4. http://blog.naver.com/ruvendix
변환 생성자
매개변수가 하나인 생성자를 변환 생성자라 함!
함수의 인자로 넘길 때 변환될 수 있으므로 변환 생성자라 함!
class CTest
{
CTest(int iAge)
{
// 초기화 작업
}
};
void Func(const Ctest &rCtest) { }
Func(5); // 이게 작동함!
5. http://blog.naver.com/ruvendix
explicit 예약어
변환 생성자에 제한을 걸려면 explicit 예약어를 사용해야 함!
explicit 예약어는 컴파일러가 묵시적 형변환을 하지 못하도록 막음!
class CTest
{
explicit CTest(int iAge)
{
// 초기화 작업
}
};
void Func(const Ctest &rCtest) { }
Func(5); // 이제는 작동 불가!
6. http://blog.naver.com/ruvendix
복사 생성자
복사 생성자는 함수의 인자로 넘길 때 많이 호출됨!
기본 복사 생성자는 얕은 복사를 한다는 단점이 있음!
class CTest
{
CTest(const Ctest &rCTest)
{
// 초기화 작업
}
};
CTest Test1;
CTest Test2(Test1); // 복사 생성자 호출!
복사 생성자는 기본 복사 생성자가 존재함!