>백엔드 개발 >C++ >클래스가 아닌 반환 유형의 최상위 Const가 중복되는 것처럼 보이는 이유는 무엇입니까?

클래스가 아닌 반환 유형의 최상위 Const가 중복되는 것처럼 보이는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 07:56:02984검색

Why Does Top-Level Const on Non-Class Return Types Seem Redundant?

비클래스 반환 유형이 Const의 이점을 누리나요?

C에서는 불변 반환 유형의 모범 사례로 const 사용이 강조되었습니다. 데이터 처리. 그러나 const를 사용하여 클래스가 아닌 반환 유형을 한정하면 눈에 띄는 차이가 없는 것처럼 보일 수 있습니다.

<code class="cpp">int foo() { }
const int foo() { }</code>

그렇다면 Bigint 클래스의 예시처럼 이러한 구별이 존재하는 이유는 다음과 같습니다.

<code class="cpp">int& operator[](const int index);
const int operator[](const int index) const;</code>

설명:

클래스가 아닌 함수의 반환 유형에 적용된 최상위 const 한정자는 사실상 무시되어 위의 두 선언을 동일하게 렌더링합니다. 그러나 참조의 경우에는 그렇지 않습니다.

<code class="cpp">int& operator[](int index);
int const& operator[](int index) const;</code>

이러한 시나리오에서는 구별이 의미가 있습니다.

또한 반환 유형에 대한 최상위 const 한정자는 함수 선언에서 유사하게 무시됩니다. .

const 한정자의 관련성은 클래스 반환 유형에도 확장됩니다. 함수가 T const를 반환하는 경우 반환된 개체에서 const가 아닌 함수를 호출하려고 하면 아래 그림과 같이 오류가 발생합니다.

<code class="cpp">class Test {
public:
    void f();
    void g() const;
};

Test ff();
Test const gg();

ff().f();             // legal
ff().g();             // legal
gg().f();             // illegal
gg().g();             // legal</code>

위 내용은 클래스가 아닌 반환 유형의 최상위 Const가 중복되는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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