위임 생성자는 특정 생성자를 호출하기 전 다른 생성자를 먼저 호출하는 것이다. 상속 받을 때처럼 : 기호를 써야한다.
- member-initializer-list(멤버 초기화 리스트)를 가질 수가 없다. 즉 아래에 mX(X), mY(Y) 에서 다른 생성자 호출이 불가능하다.
- Parent(int X) : Parent() 여기서는 Parent가 먼저 호출되고 int형 파라미터 들어간 생성자가 호출 된다.
- 자식 클래스에서 또한 부모 클래스의 생성자를 쓸 수가 있다, 부모 생성자에선 자식 생성자를 대리로 호출하는건 불가능하다. 마찬가지로 부모 클래스의 생성자가 호출 되고 자식 클래스의 생성자가 호출된다.
#include <iostream>
#include <algorithm>
using namespace std;
class Parent
{
int mX = 0, mY = 0;
public:
Parent()
{
cout << "부모 클래스 기본 생성자" << endl;
}
// 파라미터 1개 위임 생성자
Parent(int X) : Parent()
{
cout << "부모 클래스 기본 생성자 파라미터 1개" << endl;
}
// 파라미터 2개 초기화 리스트
Parent(int X, int Y) : mX(X),mY(Y)
{
cout << "부모 클래스 기본 생성자 파라미터 2개" << endl;
}
};
class Child : public Parent
{
public:
Child() : Parent()
{
cout << "자식 클래스 기본 생성자" << endl;
}
};
int main()
{
Parent parent(5, 6);
cout << endl;
Child child;
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 동기(synchronous)와 비동기(asynchronous) / 블로킹(blocking)과 논블로킹(non-blocking) (0) | 2022.08.16 |
---|---|
C++ Copy and Swap idiom (0) | 2022.08.08 |
C++ NULL과 nullptr의 차이 (0) | 2022.08.04 |
C++ 가변 길이 배열 (Variable Length Array) (0) | 2022.08.02 |
C/C++ 포인터 역참조 (deference) (0) | 2022.08.02 |