이전에 외부에서 함수의 사용을 막고자 할 때 (예를 들면 객체의 복사를 막고자 할 때) pirvate에 선언함으로써 해당 함수의 호출을 막았었다.
class A {
private:
A(const A&);
}
이제는 `delete` 키워드를 통해 사용하고자 하지 않는 함수의 사용을 완전 봉쇄할 수 있다.
특히나 객체의 복사를 막고자 할 때 유용하게 사용할 수 있다.
#include <iostream>
class A {
private:
int x;
public:
A(int x) : x{x} {};
A(const A&) = delete;
A& operator=(const A&) = delete;
};
int main(void)
{
A x{1234};
A y = x; // error -- call to deleted bopy constructor
y = x; // error -- operator= deleted;
return 0;
}
이렇게 함으로써 컴파일 단위에서 에러를 미리 예방할 수 있다.
[C++11] Final specifier (0) | 2023.08.24 |
---|---|
[C++11] Default functions (1) | 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 |
[C++11] Converting constructors (Braced list syntax) (0) | 2023.08.24 |