C++ - 자주 사용하는 C++ 이디엄(idiom) No Copyable mix-in
계승된 클래스는 복사 금지라고 명쾌하게 표현할 수 있는 idiom 이다.
class noCopyable{
noCopyable(const noCopyable&)=delete;
noCopyable& operator=(const noCopyable&)=delete;
protected:
noCopyable()=default;
~noCopyable()=default;
};
struct X:private noCopyable{};
CRTP를 이용한 구현
template<class>
class noCopyable{
noCopyable(const noCopyable&)=delete;
noCopyable& operator=(const noCopyable&)=delete;
protected:
noCopyable()=default;
~noCopyable()=default;
};
struct X:private noCopyable<X>{};
struct Y:private noCopyable<Y>{};
struct Z:X,Y{};
int main()
{
std::cout<<sizeof(Z)<<std::endl; // 1
}
이 글은 2020-05-29에 작성되었습니다.