Lvalue와 Rvalue

2019. 8. 23. 00:38PL/C++

C++에서의 모든 표현식은 Lvalue 혹은 Rvalue다. Lvalue는 단일 표현식 이후에도 없어지지 않고 지속되는 객체다. Lvalue는 쉽게 말해 변수라고 생각하면 되고, Rvalue는 상수 혹은 임시 객체다. 예를 들어 전위연산자는 Lvalue, 후위연산자는 Rvalue다.

 

보통 Rvalue를 참조하려고 하면 에러가 뜬다. C++11 이상부터는 &&참조연산자를 이용해 Rvalue를 참조할 수 있다. 혹은 const T &를 사용한다

 

[추가] Lvalue가 될 수 없는 const 객체는 반드시 const 반환을 해야만 한다

 

int& Array::operator[](int index){
	return pArr_[index];
}

const int& Array::operator[](int index) const{
    return pArr_[index];
}

 

[출처] https://effort4137.tistory.com/entry/Lvalue-Rvalue