상세 컨텐츠

본문 제목

[C++11] Default functions

C++/Modern C++(11, 14, 17, 20)

by 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;
}

 

'C++ > Modern C++(11, 14, 17, 20)' 카테고리의 다른 글

[C++11] Explicit virtual overrides  (0) 2023.08.25
[C++11] Final specifier  (0) 2023.08.24
[C++11] Deleted functions  (0) 2023.08.24
[C++11] Range-based for loops  (0) 2023.08.24
[C++11] Special member functions for move semantics  (1) 2023.08.24

관련글 더보기