30. 변환 생성자

Yongs12 ㅣ 2023. 6. 20. 15:39

변환 생성자는 매개변수가 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