일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- react
- react native mac
- 싸이월드
- react native accessible
- react native typescript
- react-native
- Expo
- c++ 정보은닉
- cyworld
- 리액트 네이티브 설치 오류
- 리액트 네이티브 맥
- stencil buffer
- 벡터와 리스트의 차이
- javascript
- 스탠실 버퍼 사용
- node.js
- react native typescript navigation
- node
- C++
- 스탠실 버퍼 시작
- c++ using
- react native 타입스크립트
- CSS
- 스탠실 버퍼 튜토리얼
- GitHub
- react native typescript navigate
- react native ios 기기 연결
- unity stencil buffer
- react native
- html
Archives
- Today
- Total
혀니의 이거저거 뿌시기
이동 의미론 ( move semantics) 본문
728x90
C++11 부터 지원되는 이동연산자.
* lvalue : 접근할 수 있는 주소를 가진 변수 - 이동연산을 할 수 없음
(이름이 있는 변수, 함수 int a, &foo()
선행 증감 연산자 ++a, --b
lvaule배열의 인덱스 접근 l[n]
string리터럴 "hello move sementics"
등등...)
*prvalue: 접근을 할순 있지만 주소를 가지지 못한 표현식 -이동연산 가능
(리터럴 값 1,1.3f
후행 증감연산자 a++, b--
값 리턴함수 호출 return str1 + str2;
비 참조 캐스팅 static_cast<double>(x), (int)42
등등)
*xvalue : 접근할 수 있는 주소를 가지지만 이동연산을 할 수 있음
rvalue참조를 리턴하는 함수 std::move(x)
rvalue 배열의 인덱스 접근 r[n]
rvalue 참조캐스팅 static_cast<int&&>(i)
등등)
*rvalue = prvalue + xvalue
int tmain(int argc, _TCHAR* argv[])
{
int num1 = 5, num2 = 3;
num1 = 10; // num1은 lvalue, 10은 int형 prvalue
num1 = num2; // num1은 lvalue, num2은 lvalue
int num3 = num1 + num2; // num3은 lvalue, num1 + num2은 prvalue
std::move(num3); // rvalue 참조를 리턴 xvalue
static_cast<DWORD>(num1) // 값으로 캐스팅 lvalue
static_cast<DWORD&&>(num1) // rvalue 참조로 캐스팅 xvalue
}
예제
<Move Semantics>
lvalue와 rvalue를 구분한 파라미터를 받아 처리 가능
이러한 경우 move를 이용하면 캐스팅 가능.
-> 차후 추가 공부 필요
728x90
'CS > C++' 카테고리의 다른 글
static 변수 (0) | 2024.01.05 |
---|---|
name mangling (0) | 2023.12.14 |
L value 와 R value (0) | 2023.12.14 |
얕은복사 / 깊은복사 (0) | 2023.12.14 |
c++ typedef vs using 키워드 차이점 (0) | 2023.12.14 |