string a = "hello man world girl";
cout << static_cast<void*>(a.data()) << endl;
cout << a << endl;
string b = a;
cout << static_cast<void*>(b.data()) << endl;
cout << b << endl;
string c = move(a);
cout << a << endl;
cout << static_cast<void*>(a.data()) << endl;
cout << static_cast<void*>(c.data()) << endl;
cout << c << endl;
b = a을 하게 되면 복사가 일어난다. 즉, 객체의 생성 -> 복사 -> 파괴가 두번 발생한다.
move 의 경우, 객체의 생성 후 이동만 발생한다. a의 allocator가 c로 이동되며, 이동 후 a의 allocator에는 빈 값과 빈 버퍼가 들어간다.
'Windows > Dev' 카테고리의 다른 글
[C++] 함수 const 선언 정리 (0) | 2024.09.12 |
---|---|
[MSVC] 클래스 고찰 & 디컴파일 (0) | 2024.08.08 |
detours 빌드 및 적용 (0) | 2024.04.11 |
[Visual Studio 2022] curl 빌드 (0) | 2023.01.30 |
[VC++] string deallocate (0) | 2022.05.23 |