가능한 경우 반환 유형에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!