On this page
article
C++ Delete
delete function
문법
void foo(int) = delete; // 함수 삭제 foo(10); // 컴파일 에러`
이유
암시적 변환에 의해 의도하지않은 함수 호출 방지
- 선언만 제공할 시 링크 에러 발생
- delete로 해둘 시 컴파일 에러 발생
int gcd(int a, int b) {} double gcd(double a, double b); // 함수 선언만 double gcd(double a, double b) = delete; main() { gcd(2, 10); gcd(2.2, 4.3); }
템플릿이 특정 타입의 함수 생성 방지
template<typename T> T square(T a) { return a * a; } char square(char) = delete;
컴파일러가 멤버함수 자동 생성 및 사용 방지 (가장 중요)
- 추후 설명