본문 바로가기
프로그래밍 언어/C++

[C++] 함수 삭제 function delete

by 까망 하르방 2025. 1. 14.
반응형

함수 삭제 (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;
};
반응형

댓글