상세 컨텐츠

본문 제목

[C++11] Deleted functions

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

by deulee 2023. 8. 24. 18:35

본문

이전에 외부에서 함수의 사용을 막고자 할 때 (예를 들면 객체의 복사를 막고자 할 때) 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;
}

이렇게 함으로써 컴파일 단위에서 에러를 미리 예방할 수 있다.

관련글 더보기