StoryCode

문법.복사생성자 (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 ) 설정문제다 .

반응형

'CPP, C++' 카테고리의 다른 글

문법.for  (0) 2022.06.22
C++ 학습  (0) 2022.06.22