728x90
1. 개요
오늘은 C++ 11에 나오는 Move Semantics (move)에 대해서 알아보겠습니다.
2. Move?
Move 함수는 정확히 말하면 변수값을 R-Value로 바꿔주는 함수입니다.
#include<iostream>
using namespace std;
class A
{
public:
A() { std::cout << "일반 생성자 호출!" << std::endl; }
A(const A& a) { std::cout << "복사 생성자 호출!" << std::endl; }
A(A&& a) { std::cout << "이동 생성자 호출!" << std::endl; }
};
int main()
{
A a;
std::cout << "---------" << std::endl;
A b(a);
std::cout << "---------" << std::endl;
A c(move(a));
}
이렇게 이동생성자를 정의를 하면 move를 통해 a의 객체를 R-Value로 변경하여 이동 생성자가 호출되는 모습이 보입니다.
또한, 이러한 코드도 만들수 있습니다.
#include<iostream>
using namespace std;
int main()
{
int a = 5;
int&& b = move(a);
cout << b;
}
하지만 주의사항은 move는 이동생성자를 부르는 키워드가 아닙니다.
단지, L-Value를 R-Value로 바꿔주는 역할만 할 뿐입니다.
3. Ref
'개발자 면접 공부 > C-C++' 카테고리의 다른 글
유니폼 초기화 (0) | 2024.03.06 |
---|---|
C++ vs C# (1) | 2024.02.18 |
스마트 포인터의 new와 make의 차이 (1) | 2023.10.03 |
Inline 에 대하여 (2) | 2023.09.25 |
C++ 17 variant (0) | 2023.09.19 |