반응형
C ++의 멤버 함수에 대한 const &, & 및 && 지정자
최근에 API를boost::optional
읽고 다음 과 같은 줄을 발견했습니다.
T const& operator *() const& ;
T& operator *() & ;
T&& operator *() && ;
또한 멤버 함수를 const &, & 및 &&로 정의하는 자체 프로그램을 작성했으며 (반환 유형에 대해 말하고 있지 않지만 세미콜론 바로 앞의 지정자) 제대로 작동하는 것 같습니다.
멤버 함수 const를 선언하는 것이 무엇을 의미하는지 알고 있지만 누구나 const &, & 및 &&를 선언하는 것이 무엇을 의미하는지 설명 할 수 있습니다.
const&
이는이 오버로드가 const, non-const 및 lvalue 객체에만 사용된다는 것을 의미합니다.
const A a = A();
*a;
&
이는이 오버로드가 상수가 아닌 객체에만 사용된다는 것을 의미합니다.
A a;
*a;
&&
즉,이 오버로드는 rvalue 객체에만 사용됩니다.
*A();
C ++ 11 표준의이 기능에 대한 자세한 내용은이 게시물을 읽을 수 있습니다. "* this에 대한 rvalue 참조"란 무엇입니까?
멤버 함수 참조 한정자이며 C ++ 11에 추가 된 기능 중 하나입니다. this
함수 참조 한정자를 지정 하여 암시 적 개체 매개 변수가 lvalue인지 rvalue 인지에 따라 비 정적 멤버 함수를 오버로드 할 수 있습니다 ( some details ).
비 정적 멤버 함수에 대한 심판-한정자를 지정하려면 다음 중 하나와 기능을받을 수 있습니다 &
또는 &&
.
#include <iostream>
struct myStruct {
void func() & { std::cout << "lvalue\n"; }
void func() &&{ std::cout << "rvalue\n"; }
};
int main(){
myStruct s;
s.func(); // prints "lvalue"
std::move(s).func(); // prints "rvalue"
myStruct().func(); // prints "rvalue"
}
참조 URL : https://stackoverflow.com/questions/28066777/const-and-specifiers-for-member-functions-in-c
반응형
'programing' 카테고리의 다른 글
백만 개가 넘는 테스트 케이스가있는 테스트 스위트 실행 (0) | 2021.01.16 |
---|---|
ADT 23으로 업데이트 한 후 annotations.jar을 찾지 못함 (0) | 2021.01.15 |
형식 안전 열거 형을 만드는 방법은 무엇입니까? (0) | 2021.01.15 |
C #에서 다른 프로세스에 의해 잠긴 파일을 어떻게 삭제합니까? (0) | 2021.01.15 |
가장 좋은 "비밀번호 분실"방법은 무엇입니까? (0) | 2021.01.15 |