[CS] Values

Dorae·2024년 11월 1일
0

CS

목록 보기
2/3

문제 인식

  • 저번 포스트에서 서술했던 LValue와 RValue에 이어서 작성한다.
  • C++11 이후로 추가된 부분이다.
  • [CS] L-Value vs R-Value

LValue 및 RValue

  • 정의를 한 번 다시 보고 넘어가겠다.

LValue

int a = 1;
int b = 2;
  • 지난 포스트에 a, b는 LValue / 1, 2는 RValue라고 했다.
  • 조금 더 자세히 설명하자면, a와 b의 경우 이 줄이 지나간 이후에도 남아있게 된다.
  • 쉽게 말해서, '식별자'가 있다고 생각하면 편하다.
  • 거기에 더해서, 식별자에 접근하여 메모리 저장이 가능한 경우가 LValue가 된다.

RValue

  • 지난 포스트에서는 LValue를 제외한 모든 값이라고 정의했다. (C++11 이전의 정의)
  • 이번에는 새로 나오는 값들과 같이 다시 정의하려 한다.

glvalue vs rvalue

  • 식별자의 유무 및 move가 가능한지 여부에 따라 크게 두 부류로 먼저 나뉜다.
  • glvalue의 경우, 식별자가 있는 케이스이다.
  • rvalue의 경우, 하단에서 추가로 말하겠지만, move가 가능한 케이스이다.

lvalue, xvalue, prvalue

  • 아직은 기록하지 않은 부분에 대한 기준으로 나뉜다. (move가 가능한가?)
    • 이 부분은 Move Sematics에서 서술하겠다.
  • lvalue의 경우 move가 불가능한 케이스이다.
  • rvalue(xvalue, prvalue)의 경우 move가 가능한 케이스이다.
profile
게임 개발자 지망생

0개의 댓글