반응형
복사 생성자
복사 생성자는 기존 객체를 복사하여 새로운 객체를 생성할 때 호출됨.
class MyClass {
public:
MyClass(const MyClass &obj) {
cout << "복사 생성자 호출" << endl;
}
};
임시 객체와 보이지 않는 복사 생성
함수 반환 시 반환된 객체는 임시 객체로 간주되며, 보이지 않는 복사 생성이 일어날 수 있음.
Shallow copy, Deep copy
Shallow copy는 객체 내부의 포인터만 복사하는 반면, Deep copy는 포인터가 가리키는 대상까지 새로 복사하는 방식임.
class MyClass {
private:
int* data;
public:
MyClass(int val) { data = new int(val); }
MyClass(const MyClass &obj) {
data = new int(*obj.data); // Deep copy
}
};
묵시적 변환 및 허용되는 변환
C++에서는 변환 생성자를 정의하여 한 타입에서 다른 타입으로 변환될 수 있음.
class MyClass {
public:
MyClass(int val) {}
};
r-value 참조
r-value 참조는 임시 객체를 참조할 수 있도록 하는 기능이며, 이동 시맨틱을 지원하기 위한 필수 요소임.
int &&rdata = 10 + 5;
이동 시맨틱
이동 시맨틱을 활용하면 불필요한 객체 복사를 줄일 수 있으며, 성능 향상에 기여함.
class MyClass {
public:
MyClass(MyClass &&obj) {
cout << "이동 생성자 호출" << endl;
}
};
반응형
'SW > C++' 카테고리의 다른 글
7장. 연산자 다중 정의 (0) | 2025.03.05 |
---|---|
L-value와 R-value (0) | 2025.02.28 |
5장. 클래스 (0) | 2025.02.26 |
4장. 함수와 네임스페이스 (0) | 2025.02.26 |
3장. C++의 주요 기본 개념 (0) | 2025.02.11 |