>백엔드 개발 >C++ >C 함수 선언에서 '= 삭제'는 무엇을 의미합니까?

C 함수 선언에서 '= 삭제'는 무엇을 의미합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-22 19:59:16466검색

What does

함수 선언에서 "= delete"의 의미 이해

C 11에서는 "= delete" 구문을 사용하여 기능을 효과적으로 방지합니다. 복사를 금지하거나 특정 변환을 제한하기 위해 일반적으로 사용됩니다.

복사 생성자 및 할당 연산자 삭제

아마도 "= 삭제"의 가장 일반적인 사용 사례는 다음과 같습니다. 복사를 금지합니다. 예를 들어 복사를 원하지 않는 "my_class"라는 클래스가 있는 경우 다음과 같이 선언할 수 있습니다.

class my_class
{
public:
    ...
    my_class(const my_class &) = delete;
    ...
};

이 선언은 컴파일러가 "에 대한 기본 복사 생성자와 할당 연산자를 생성하는 것을 방지합니다. my_class."

원하지 않는 전환 방지

"=의 또 다른 용도 삭제"는 특정 유형 변환을 금지하는 것입니다. 예를 들어, "long long" 값으로만 ​​구성하려는 클래스 "Z"가 있는 경우 "= delete"를 사용하여 더 작은 유형의 변환을 방지할 수 있습니다.

struct Z
{
public:
    ...

    Z(long long);     // can initialize with a long long      
    Z(long) = delete; // but not anything less
};

추가 기능 수정자

"= 0"(기능을 순수 가상으로 설정) 및 "= delete"(기능을 삭제) 외에 함수), C에는 다른 함수 수정자가 없습니다. 그러나 "override" 및 "final"과 같은 다른 키워드를 사용하여 가상 함수의 동작을 수정할 수 있습니다.

위 내용은 C 함수 선언에서 '= 삭제'는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.