문법.복사생성자 (Copy Constructor).Copy Elision.이동생성자
CPP, C++반응형
#include <iostream>
class A {
int data_;
public:
// #1. 일반생성자 호출
A(int data) : data_(data) {
std::cout << "일반 생성자 호출\n";
}
// #2. 복사생성자 호출
A(const A& rhs) : data_(rhs.data_) {
std::cout << "복사 생성자 호출\n";
}
// #3. 이동생성자 호출
A(const A&& mdata) ........
};
int main(void) {
// #3
A a(1);
// #4
A b(a);
// #5
A c(A(2));
}
- #3 에서 생성하면 #1 일반생성자 호출되고, #4 에서 변수로 생성하면 #2 복사생성자가 호출된다 .
- 하지만, #5 처럼 호출하면 일반생성자만 호출된다 . 컴파일러 Copy Elision ( -fno-elide-constructors ) 설정문제다 .
반응형