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;
        
    • 컴파일러가 멤버함수 자동 생성 및 사용 방지 (가장 중요)

      • 추후 설명