C++의 생성자 호출시 내부에서 다른 생성자 호출

|
C++은 Java처럼 this를 인스턴스 내부에서 제공하지만 막상 this를 이용한 다른 생성자 호출은 불가능하다.

그런 경우에 쓸 수 있는 간단한 팁을 몇 가지 정리한다.
(출처 : http://stackoverflow.com/questions/308276/c-call-constructor-from-constructor)


1. 인자에 default value 지정

public:   Foo(char x, int y=0);

위와 같은 식으로 인자에 default 값을 지정해 주면 생성자 호출시 인자를 하나만 줄 경우 y값은 자동으로 0이 전달된다.
이 방법은 다른 언어들(python, ruby)에서도 볼 수 있는데 인자 갯수가 많을 경우 뭘 생략했는지 컴파일러가 판단하기가 어려우므로 맨 뒤에서부터 생략되는 것으로 가정한다(고 알고 있다).


2. 공통적으로 쓸 수 있는 init() 함수를 하나 만들어 두고 각 생성자에서 값을 적당히 조정하여 init()을 호출한다.

3. C++11 이후로는 다른 생성자 호출이 가능하다. C++은 한 회사가 매니징 하는 Java와는 달라 거의 표준이 바뀌지 않았지만 최근에는 급변하는 프로그래밍 언어 트렌드를 반영하여 새로운 표준이 만들어지는 추세다.

C++11 이후로는 아래와 같이 다른 생성자 호출이 가능하다.

Foo(char x, int y) {}

위와 같은 생성자가 있을 경우 int 인자만 쓰는 생성자를 따로 만들고 싶다면,

Foo(int y) : Foo('a', y) {}

이런 방식으로 다른 생성자 호출이 가능하다.

더 이상의 자세한 설명은 생략한다...


Trackback 0 And Comment 0
prev | 1 | 2 | 3 | 4 | 5 | 6 | ··· | 138 | next