C++11 - 생성자 상속(inheriting constructors)

개요

부모 클래스에서 정의한 생성자들을 자식 클래스에서 그대로 사용할 수 있는 편의 기능이다.



문법

자식 클래스에서 using 키워드를 사용하여 부모 클래스 이름과 부모 클래스의 생성자 이름을 :: 구분으로 호출한다.
자식 클래스는 복수의 부모 클래스를 상속한 경우에도 각 부모 클래스의 생성자를 사용할 수 있다.

class Base { };

class Derived : public Base {
  
  // Base 생성자를 Derived에서 암묵적으로 선언한다
  using Base::Base;
};




사용 예

#include <iostream>
#include <string>

class Base {
public:
  Base() {}
  Base(int) { std::cout << "Base(int)" << std::endl; }
  Base(const std::string&) { std::cout << "Base(const std::string&)" << std::endl; }  
};

class Derived : public Base {
  // Base 생성자를 Derived에서 암묵적으로 선언한다
  using Base::Base;
};

int main()
{
  Derived d1(3);       // OK
  Derived d2("hello"); // OK
}

이 글은 2017-01-09에 작성되었습니다.