본문 바로가기
C++

Value categories

by 냉동커피 2021. 9. 15.

< Value categories >

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