검색결과 리스트
글
C++ 11 생성자 위임 Delegating constructors
웹 컴파일러 링크 : http://melpon.org/wandbox/
만일 여러 생성자가 같은 일을 하기 원한다면 초기화 함수를 만들어 생성자에서 호출하도록 할 것이다.
class CTest
{
public :
CTest()
{
Init(0);
}
CTest(int iValue)
{
Init(iValue);
}
CTest(std::string szString)
{
int iCastValue = boost::lexical_cast<int>(szString);
Init(iCastValue);
}
void Init(int iValue) {
if ( 0 < iValue && iValue < MAX ) {
m_iMember = iValue;
}
else throw error_value(iValue);
// ....
}
private :
int m_iMember;
};
하지만 위의 코드는 유지 보수가 불편하고 오류가 발생할 확률도 높을 뿐더러 작성해야하는 코드도 길다.
이런 불편을 해결하기 위해서 C++ 11 에서는 한 개의 생성자를 정의하여 다른 생성자에서 사용할 수 있게 하였다.
class CTest
{
public:
CTest(int iValue)
{
if ( 0 < iValue && iValue < MAX ) {
m_iMember = iValue;
}
else throw error_value(iValue);
// ....
}
CTest() : CTest{0} {}
CTest(std::string szString) : CTest{ boost::lexical_cast<int>(szString) } {}
private:
int m_iMember;
};
참고 :
- [N1986 == 06 − 0056] Herb Sutter and Francis Glassborow: Delegating Constructors (revision 3).
RECENT COMMENT