What are copy elision and return value optimization in C++?


The Copy Elision is also known as the Copy Omission. This is one of the compiler optimization technique. It avoids the unnecessary copying of objects. Almost any current compiler uses this Copy Elision technique.

Let us see how it works by the help of one example code.

Example Code

#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";
}

Output

Constructor called

Now let us discuss why the copy constructor is not called?

So when an object is being constructed, one temporary object is generated and it copies to the actual object. So we can say that internally it will be looked like this.

MyClass ob = "copy class object";

Will be working as.

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

The C++ compilers avoids this kind of overheads.

Updated on: 30-Jul-2019

176 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements