C++/Modern C++(11, 14, 17, 20)
[C++11] Default functions
deulee
2023. 8. 24. 18:47
C++11에서 `default` 키워드는 클래스의 특정 멤버 함수(생성자, 복사 생성자, 복사 대입 연산자 등)를 컴파일러에게 "기본 구현"을 생성하도록 지시한 데 사용된다.
주로 기본 구현을 사용하고자 할 때 유용하며, 코드 작성을 간결하게 만들어준다.
#include <iostream>
class A {
private:
int x {1};
public:
A() = default;
A(int _x) : x{_x} {}
};
int main(void)
{
A a; // 기본 생성자 호출
A b(123); // A::A(int _x) 호출
return 0;
}
위와 같이 함으로써 기본으로 생성되는 생성자나 복자 생성자 등을 굳이 따로 정의하지 않더라도 기본값을 실행할 수 있게 해준다.
만약 이전의 C++ 버전이었다면 기본 생성자를 따로 정의하지 않는다면 `A a;` 구문은 에러를 일으켰을 것이다.
상속을 하게 될 경우도 유용하게 사용된다.
#include <iostream>
class A {
private:
int x {1};
public:
A() {std::cout << "Parent Constructor" << std::endl;}
A(int _x) : x{_x} {}
};
class B : public A {
public:
B() = default; // Calls A::A
};
int main(void)
{
B b;
return 0;
}