CafeM0ca

[C++] Rule of Three, Rule of Five, Rule of Zero 본문

Programming/C++

[C++] Rule of Three, Rule of Five, Rule of Zero

M0ca 2018. 7. 22. 02:35
반응형
이 규칙들은 C++에서 지켜야하는 것들이다. https://en.cppreference.com/w/cpp/language/rule_of_three

Rule of Three
소멸자, 이동 생성자, 이동 복사 연산자를 정의해두자.

Rule of Five
소멸자, 이동 생성자, 복사 생성자, 이동 대입 연산자, 복사 대입 연산자 다섯 가지 특수 멤버 함수들을 구현해놓자.

Rule of Zero
소멸자, 이동 생성자, 복사 생성자, 이동 대입 연산자, 복사 대입 연산자 다섯 가지 특수 멤버 함수들을 필요로 하지 않도록 디자인 하는 것이다.
기본적인 방법으로는 구식 스타일의 메모리 할당을 피하는 것이다.
A클래스를 2차원 배열로 동적할당 하기 위해 A**으로 선언하지 말고 vector<vector<A>> 이런식으로 사용하자. vector는 메모리 할당을 알아서 해주기 때문에 위에 상기된 5가지 멤버함수을 사용할 일이 없다.



결국은 modern C++와서는 rule of zero가 짱먹은거 같다만..ㅋㅋ vector를 사용하지 않는다면 rule of three 나 rule of five를 지켜라 이말이구만.

반응형

'Programming > C++' 카테고리의 다른 글

[C++] std::call_once, std::once_flag  (0) 2018.09.16
[C++] explicit  (0) 2018.07.23
[JUCE] 맵 컴포넌트가 안보이는데? (컴포넌트 레이아웃 배치순서)  (0) 2018.07.16
[C++] unifrom initializing  (0) 2018.07.13
[C++] constexpr  (0) 2018.07.09
Comments