반응형
함수 삭제 (Delete Funciton)
int GCD(int a, int b)
{
if (b == 0)
{
return a;
}
GCD(b, a % b);
}
int main()
{
printf("%d\n", GCD(10, 4)); // 2
printf("%d\n", GCD(3.3, 4.4)); // 1
}
최대 공약수를 구하는 함수 GCD
C++에서는 GCD(3.3, 4.4); 와 같이 호출해도
double 형이 int 형으로 형변환되기에 컴파일 문제는 없다.
경우에 따라서는
허용하지 않는 Case에 대해 컴파일 에러 시키는 것이 필요할 수 있다.
함수 내부에서 그런 Case를 처리하는 것은 지저분해지기 때문에
다른 방법으로 아래와 같이 delete 키워드를 활용할 수 있다.
#include <stdio.h>
int GCD(int a, int b)
{
if (b == 0)
{
return a;
}
GCD(b, a % b);
}
double GCD(double a, double b) = delete; // 함수 삭제
int main()
{
printf("%d\n", GCD(3.3, 4.4)); // error
}
컴파일 시 Error를 잡아낼 수 있다.
Q) 이외에 언제 함수를 삭제할까?
A) 컴파일러가 자동으로 함수 생성하는 것을 막을 때
class Harbang
{
// 복사 생성자 자동 생성 방지
Harbang(const Harbang& h) = delete;
};
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] Lambda expression 지역 변수 캡처 (2) | 2025.01.18 |
---|---|
[C++] 후위 반환 타입 (suffix return type) (1) | 2025.01.15 |
[C++] STL capacity와 size 함수 차이 (1) | 2025.01.13 |
[C/C++] extern 키워드 (0) | 2025.01.12 |
[C/C++] 함수 template (0) | 2025.01.11 |
댓글