// 后置++,返回自增前的值,且返回的是一个右值
const int operator++(int){
int temp(*this);
*this += 1;
return temp;
}
我是在看一本书上看到的,返回类型是const的,随后百度看了下,发现大家博客写的大多也是返回const,我有点想不通,为何?去掉const又何妨呢?
PHP中文网2017-04-17 15:24:22
클래스 작성자는 반환된 결과가 값으로만 사용되며 결과가 객체로 수정될 수 없음을 강조하기 위해 이 글을 작성합니다. const
을 제거하면 더 이상 이 제한이 적용되지 않습니다. 예를 들어 컴파일러에 의해 차단되지 않고 cout << (a ).modify()
을 작성할 수 있습니다.
PHPz2017-04-17 15:24:22
C 11 다음:
내장된 후증가 표현식은 prvalue입니다. 표준은 클래스가 아닌 비배열 prvalue가 const/휘발성으로 수정되지 않을 것이라고 규정합니다. int 연산자 (int);는 호출 시 prvalue입니다. 이 반환 값 유형에 const를 추가하는 것은 중복됩니다(책에 무작위로 기록될 수 있음). 일반적으로 연산자 오버로딩은 내장 연산자 버전과 유사한 의미를 유지해야 하므로 이를 prvalue에 추가하면 됩니다.
prvalue가 const가 아닌 멤버 함수를 호출하는 것을 방지하려면 ref-qualifier(예: 자동 수정() &;
)를 사용하세요.const로 수정된 prvalue는 이동 의미론을 방지하는 등 const가 아닌 rvalue 참조와 일치하지 않습니다. 이는 대부분의 경우 추가 런타임 오버헤드만 가져옵니다. const 값을 반환하는 것은 더 이상 사용되지 않습니다.