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

C++에서 복사 생략 및 반환 값 최적화란 무엇입니까?

<시간/>

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

예제 코드를 통해 작동 방식을 살펴보겠습니다.

예시 코드

#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++ 컴파일러는 이러한 종류의 오버헤드를 방지합니다.