비클래스 반환 유형이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!