오른쪽 값, 왼쪽 값 등의 미세 정의
신경이 쓰인 곳, 실수등 있으면 댓글을 주시면 다행입니다.
표현
공식. 우선 여기에서. C++의 모든 표현식은 어떤 값이며 객체 또는 포인터입니다.
1 + 2; // expression ; an object
3; // expression ; an object
func(); // expression ; an object
&func; // expression ; a pointer
lvalue
왼쪽 값. 대입식의 왼쪽에 올 수 있는 값. 이 이름은 위의 이유로 관습적으로 붙은 것이지만, 당연히 우변에 오기도 한다.
int n = 0;
n = 1; // n is lvalue.
int m = n; // n is lvalue.
int& func();
func() = 12; // the result of func() is lvalue.
rvalue
오른쪽 값. 이것도 관습적으로 붙은 이름이지만, 기본적으로 좌변에 오지 않는다.
아래에 소개하는 xvalue와 prvalue로 분류할 수 있다.
int n = 0; // 0 is rvalue ; prvalue
int m = std::move(n); // the result of std::move(n) is rvalue ; xvalue
prvalue
pure rvalue의 약자. 순수한 오른쪽 값. C++03까지는 모든 rvalue가 여기로 분류된다.
리터럴과 참조를 반환하는 함수를 제외한 함수의 반환 값이 여기에 분류됩니다.
int func();
func(); // the result of func() is prvalue.
xvalue
eXpiring value의 약자. 죽음의 값의 뜻으로, C++11부터는 좌변치를 우변치 참조에 캐스트 하는 것으로 일시 오브젝트와 같은 취급을 시킬 수가 있지만, 그러한 여명 선고를 한 오브젝트가 xvalue로 분류되어 한다. 이동 의미론의 가장 기본적인 개념.
int n = 0;
int m = static_cast< int&& >(n); // static_cast< int&& >(n) is xvalue.
int&& func();
func(); // the result of func() is xvalue.
glvalue
generalized lvalue의 약어, 종합 lvalue.
lvalue와 xvalue를 포함하는 개념. xvalue는 오른쪽 값 참조이고 오른쪽 값을 다루지 만 본질은 lvalue입니다.
따라서 lvalue와 xvalue를 총칭하여 glvalue라고합니다.
int n = 0;
n; // glvalue ; lvalue
std::move(n); // glvalue ; xvalue
표
N3337 3.10 그림 1의 copipe.
Reference
이 문제에 관하여(오른쪽 값, 왼쪽 값 등의 미세 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rinse_/items/cffa87016b7de49391ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1 + 2; // expression ; an object
3; // expression ; an object
func(); // expression ; an object
&func; // expression ; a pointer
왼쪽 값. 대입식의 왼쪽에 올 수 있는 값. 이 이름은 위의 이유로 관습적으로 붙은 것이지만, 당연히 우변에 오기도 한다.
int n = 0;
n = 1; // n is lvalue.
int m = n; // n is lvalue.
int& func();
func() = 12; // the result of func() is lvalue.
rvalue
오른쪽 값. 이것도 관습적으로 붙은 이름이지만, 기본적으로 좌변에 오지 않는다.
아래에 소개하는 xvalue와 prvalue로 분류할 수 있다.
int n = 0; // 0 is rvalue ; prvalue
int m = std::move(n); // the result of std::move(n) is rvalue ; xvalue
prvalue
pure rvalue의 약자. 순수한 오른쪽 값. C++03까지는 모든 rvalue가 여기로 분류된다.
리터럴과 참조를 반환하는 함수를 제외한 함수의 반환 값이 여기에 분류됩니다.
int func();
func(); // the result of func() is prvalue.
xvalue
eXpiring value의 약자. 죽음의 값의 뜻으로, C++11부터는 좌변치를 우변치 참조에 캐스트 하는 것으로 일시 오브젝트와 같은 취급을 시킬 수가 있지만, 그러한 여명 선고를 한 오브젝트가 xvalue로 분류되어 한다. 이동 의미론의 가장 기본적인 개념.
int n = 0;
int m = static_cast< int&& >(n); // static_cast< int&& >(n) is xvalue.
int&& func();
func(); // the result of func() is xvalue.
glvalue
generalized lvalue의 약어, 종합 lvalue.
lvalue와 xvalue를 포함하는 개념. xvalue는 오른쪽 값 참조이고 오른쪽 값을 다루지 만 본질은 lvalue입니다.
따라서 lvalue와 xvalue를 총칭하여 glvalue라고합니다.
int n = 0;
n; // glvalue ; lvalue
std::move(n); // glvalue ; xvalue
표
N3337 3.10 그림 1의 copipe.
Reference
이 문제에 관하여(오른쪽 값, 왼쪽 값 등의 미세 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rinse_/items/cffa87016b7de49391ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
int n = 0; // 0 is rvalue ; prvalue
int m = std::move(n); // the result of std::move(n) is rvalue ; xvalue
pure rvalue의 약자. 순수한 오른쪽 값. C++03까지는 모든 rvalue가 여기로 분류된다.
리터럴과 참조를 반환하는 함수를 제외한 함수의 반환 값이 여기에 분류됩니다.
int func();
func(); // the result of func() is prvalue.
xvalue
eXpiring value의 약자. 죽음의 값의 뜻으로, C++11부터는 좌변치를 우변치 참조에 캐스트 하는 것으로 일시 오브젝트와 같은 취급을 시킬 수가 있지만, 그러한 여명 선고를 한 오브젝트가 xvalue로 분류되어 한다. 이동 의미론의 가장 기본적인 개념.
int n = 0;
int m = static_cast< int&& >(n); // static_cast< int&& >(n) is xvalue.
int&& func();
func(); // the result of func() is xvalue.
glvalue
generalized lvalue의 약어, 종합 lvalue.
lvalue와 xvalue를 포함하는 개념. xvalue는 오른쪽 값 참조이고 오른쪽 값을 다루지 만 본질은 lvalue입니다.
따라서 lvalue와 xvalue를 총칭하여 glvalue라고합니다.
int n = 0;
n; // glvalue ; lvalue
std::move(n); // glvalue ; xvalue
표
N3337 3.10 그림 1의 copipe.
Reference
이 문제에 관하여(오른쪽 값, 왼쪽 값 등의 미세 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rinse_/items/cffa87016b7de49391ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
int n = 0;
int m = static_cast< int&& >(n); // static_cast< int&& >(n) is xvalue.
int&& func();
func(); // the result of func() is xvalue.
generalized lvalue의 약어, 종합 lvalue.
lvalue와 xvalue를 포함하는 개념. xvalue는 오른쪽 값 참조이고 오른쪽 값을 다루지 만 본질은 lvalue입니다.
따라서 lvalue와 xvalue를 총칭하여 glvalue라고합니다.
int n = 0;
n; // glvalue ; lvalue
std::move(n); // glvalue ; xvalue
표
N3337 3.10 그림 1의 copipe.
Reference
이 문제에 관하여(오른쪽 값, 왼쪽 값 등의 미세 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rinse_/items/cffa87016b7de49391ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(오른쪽 값, 왼쪽 값 등의 미세 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rinse_/items/cffa87016b7de49391ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)