1. glvalue(generalized lvalue)
: 객체의 identity를 결정하는 expression으로, reference가 이 범주에 속한다.
- 다형성 적용 가능
- 때에 따라서 prvalue로 암시적 변환이 이뤄진다.
ex) sizeof( object )
2. xvalue(expiring value)
: 객체의 자원을 재사용할 수 있는 glvalue
즉, rvalue의 identity를 부여하여 재사용 가능한 expression으로 rvalue reference, rvalue 객체의 non-reference 멤버 변수가 이에 속한다
- 다형성 적용 가능
3. lvalue
: xvalue가 아닌 glvalue
변수, 함수, 멤버 변수의 이름이 이에 해당한다.
(+전위 증감연산자, lvalue reference를 반환하는 함수)
- 주소를 가진다.
4. prvalue(pure rvalue)
: 객체를 초기화하거나 연산에서 피연산자 값을 계산하는 expression으로 리터럴, 멤버 함수, 사칙연산이 이에 해당한다.
(+non-reference 타입을 반환하는 함수, 비교연산, address-of, 후위 증감연산자, new로 생성된 객체)
- 다형성 적용 불가능
5. rvalue
: xvalue와 prvalue를 포함
- const lvalue reference 초기화 하는 데에 사용된다.
- const lvalue reference와 rvalue reference 중 후자에 우선적으로 바인드된다.
- 주소를 가지지 않는다.
'C++' 카테고리의 다른 글
std::condition_variable (0) | 2021.07.12 |
---|---|
객체 지향 프로그래밍( Object Oriented Programming ) (0) | 2021.06.27 |
C++ 스타일 캐스팅( 형변환 ) (0) | 2021.06.24 |