C++

[C++] l-value์ฐธ์กฐ, r-value์ฐธ์กฐ

carsumin 2024. 10. 7. 21:27
์ฐธ์กฐ
  • ์–ด๋–ค ๋Œ€์ƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’
  • ์ฐธ์กฐ ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•ด ๋ฐ˜๋“œ์‹œ ์–ด๋–ค ๋Œ€์ƒ์„ ์ฐธ์กฐํ•ด์•ผ ํ•จ

 

const ์ฐธ์กฐ
  • ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋Œ€์ƒ์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ
int x { 10 };
const int& xRef = x;
cout << xRef << endl;
xRef += 10; // ์˜ค๋ฅ˜ : const ์ฐธ์กฐ๋กœ ๊ฐ’ ์ˆ˜์ • ๋ถˆ๊ฐ€

 

 

l-value ์ฐธ์กฐ
  • ์‹ค์ฒด๊ฐ€ ์žˆ๋Š” ๋Œ€์ƒ์— ๋Œ€ํ•œ ์ฐธ์กฐ
// l-value ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ์„ ์–ธ ํ˜•์‹

// TypeName : ์ฐธ์กฐ ๋Œ€์ƒ์˜ ์ž๋ฃŒํ˜•
// refVar : ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„
// varName : ์ฐธ์กฐ ๋Œ€์ƒ
TypeName& refVar = varName;

 

 

l-value ์ฐธ์กฐ ๋ณ€์ˆ˜ ์˜ˆ์‹œ

 

int a = 10, b = 20;
int& aRef = a;
cout << aRef << endl;
aRef = 100;
aRef = b;

// a = 20, b = 20, a์˜ ์ฐธ์กฐ = aRef

 

 

r-value ์ฐธ์กฐ
  • ์‚ฌ์šฉํ•œ ํ›„์—๋Š” ๊ทธ ๊ฐ’์„ ๋” ์ด์ƒ ๊ฐ€์ง€๊ณ  ์žˆ์„ ํ•„์š”์—†๋Š” ๋Œ€์ƒ์„ ์ฐธ์กฐ
  • ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ด๋™ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ