> 백엔드 개발 > C++ > 객체를 반환할 때 `int 연산자[](const int index) const`보다 `const int 연산자[](const int index) const`가 선호되는 이유는 무엇입니까?

객체를 반환할 때 `int 연산자[](const int index) const`보다 `const int 연산자[](const int index) const`가 선호되는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-31 19:54:02
원래의
530명이 탐색했습니다.

Why is `const int operator[](const int index) const` preferred over `int operator[](const int index) const` when returning objects?

const 객체를 반환 값으로 사용: 그 이상

가능한 경우 반환 유형에 const를 사용하는 것이 널리 받아들여지고 있지만 왜 const int 연산자[ ](const int index) const는 int 연산자[](const int index) const보다 선호됩니다. 이를 자세히 알아보기 위해 먼저 반환 유형에서 const의 미묘함을 살펴보겠습니다.

"Effective C" 항목 03에서 언급했듯이 클래스가 아닌 반환 유형의 최상위 const 한정자는 실제로 무시됩니다. int const foo();를 작성했음에도 불구하고 반환 유형은 int로 유지됩니다. 그러나 참조 반환 유형의 경우에는 그렇지 않습니다. int& 연산자[](int index); 그리고 int const& 연산자[](int index) 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>
로그인 후 복사

이 시나리오에서 gg()에 첨부된 const 한정자는 호출자가 f()와 같은 비 const 멤버 함수에 액세스하지 못하도록 제한하여 반환된 객체의 무결성이 보장되도록 합니다. 보존됩니다.

따라서 const 객체를 반환할 때 반환 유형의 const 한정자는 비참조 반환 유형의 사소한 경우를 넘어서는 목적으로 사용됩니다. 이는 호출자가 반환된 개체와 일관된 방식으로 상호 작용하고 클래스 디자인의 의도에 따라 내부 상태를 유지하도록 보장합니다.

위 내용은 객체를 반환할 때 `int 연산자[](const int index) const`보다 `const int 연산자[](const int index) const`가 선호되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿