Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 생략 복사

<시간/>

복사 생략은 복사 생략이라고도 합니다. 이것은 컴파일러 최적화 기술 중 하나입니다. 불필요한 객체 복사를 방지합니다. 현재 거의 모든 컴파일러가 이 Copy Elision 기술을 사용합니다.

하나의 예제 코드를 사용하여 작동 방식을 살펴보겠습니다.

예시 코드

#include <iostream>
using namespace std;
class MyClass {
   public:
      MyClass(const char* str = "\0") {  //default constructor
         cout << "Constructor called" << endl;
      }
      MyClass(const MyClass &my_cls) { //copy constructor
         cout << "Copy constructor called" << endl;
      }
};
main() {
   MyClass ob = "copy class object";
}

출력

Constructor called

이제 복사 생성자가 호출되지 않는 이유에 대해 논의해 보겠습니다.

따라서 객체가 생성될 때 하나의 임시 객체가 생성되어 실제 객체에 복사됩니다. 따라서 내부적으로 다음과 같이 보일 것이라고 말할 수 있습니다.

MyClass ob = "copy class object";

다음과 같이 작동합니다:

MyClass ob = MyClass("copy class object");

C++ 컴파일러는 이러한 종류의 오버헤드를 방지합니다.