클래스 작성자는 반환된 결과가 값으로만 사용되며 결과가 객체로 수정될 수 없음을 강조하기 위해 이 글을 작성합니다. const을 제거하면 더 이상 이 제한이 적용되지 않습니다. 예를 들어 컴파일러에 의해 차단되지 않고 cout << (a ).modify()을 작성할 수 있습니다.
내장된 후증가 표현식은 prvalue입니다. 표준은 클래스가 아닌 비배열 prvalue가 const/휘발성으로 수정되지 않을 것이라고 규정합니다. int 연산자 (int);는 호출 시 prvalue입니다. 이 반환 값 유형에 const를 추가하는 것은 중복됩니다(책에 무작위로 기록될 수 있음). 일반적으로 연산자 오버로딩은 내장 연산자 버전과 유사한 의미를 유지해야 하므로 이를 prvalue에 추가하면 됩니다.
prvalue가 const가 아닌 멤버 함수를 호출하는 것을 방지하려면 ref-qualifier(예: 자동 수정() &;
)를 사용하세요.
const로 수정된 prvalue는 이동 의미론을 방지하는 등 const가 아닌 rvalue 참조와 일치하지 않습니다. 이는 대부분의 경우 추가 런타임 오버헤드만 가져옵니다. const 값을 반환하는 것은 더 이상 사용되지 않습니다.
클래스 작성자는 반환된 결과가 값으로만 사용되며 결과가 객체로 수정될 수 없음을 강조하기 위해 이 글을 작성합니다.
const
을 제거하면 더 이상 이 제한이 적용되지 않습니다. 예를 들어 컴파일러에 의해 차단되지 않고cout << (a ).modify()
을 작성할 수 있습니다.C 11 다음:
내장된 후증가 표현식은 prvalue입니다. 표준은 클래스가 아닌 비배열 prvalue가 const/휘발성으로 수정되지 않을 것이라고 규정합니다. int 연산자 (int);는 호출 시 prvalue입니다. 이 반환 값 유형에 const를 추가하는 것은 중복됩니다(책에 무작위로 기록될 수 있음). 일반적으로 연산자 오버로딩은 내장 연산자 버전과 유사한 의미를 유지해야 하므로 이를 prvalue에 추가하면 됩니다.
prvalue가 const가 아닌 멤버 함수를 호출하는 것을 방지하려면 ref-qualifier(예: 자동 수정() &;
)를 사용하세요.const로 수정된 prvalue는 이동 의미론을 방지하는 등 const가 아닌 rvalue 참조와 일치하지 않습니다. 이는 대부분의 경우 추가 런타임 오버헤드만 가져옵니다. const 값을 반환하는 것은 더 이상 사용되지 않습니다.
C 를 오랫동안 작성하지 않아서 잊어버렸지만 예를 하나 들어보겠습니다.
1 ; int a = 2; a ;