변환 생성자는 매개변수가 1개인 생성자로 한 클래스 유형에서 다른 클래스 유형으로 묵시적 또는 명시적으로 변환할 수 있는 특수 생성자이다.
변환 생성자는 묵시적 형변환을 통한 불필요한 임시 객체를 만들어냄으로써 프로그램의 효율을 갉아먹는
원인이 되기도 한다.
변환 생성자
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class CMyData
{
private:
int m_nData = 0;
public:
CMyData()
{
cout << "디폴트 생성자" << endl;
}
// 매개변수가 1개인 생성자
CMyData(int param)
{
cout << "CMyData(int param)" << endl;
}
};
int main(void)
{
CMyData a(5);
return 0;
}
explicit
ㄴ 해당 키워드를 작성하게 되면 컴파일러가 묵시적으로 형변환을 못하도록 막을 수 있다.
ㄴ 이 키워드를 작성하면 프로그래머가 명시적으로 형을 직접 변환해줘야 한다.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class CMyData
{
private:
int m_nData = 0;
public:
CMyData()
{
cout << "디폴트 생성자" << endl;
}
// 매개변수가 1개인 생성자
explicit CMyData(int param)
{
cout << "CMyData(int param)" << endl;
}
};
int main(void)
{
// 명시적 형변환을 하지않으면 문법적으로 에러가 발생한다.
CMyData a(CMyData(5));
return 0;
}'C, C++' 카테고리의 다른 글
| Template (0) | 2023.07.01 |
|---|---|
| 이동 생성자, R-value reference ( 오른값 참조 ) (0) | 2023.06.30 |
| 29. 복사 생성자 (0) | 2023.06.19 |
| 27. 클래스 생성자와 소멸자 (0) | 2023.06.18 |
| 26. 클래스 (0) | 2023.06.17 |