C++C++11C++14C++17Introduction to C++Learn C++

Learn about Implicitly-Declared Copy Constructor

Do you want to declare a copy constructor in a implicit way ? Implicitly-Declared Copy Constructor helps you to do this, here is the full post;

The Constructor in C++ is a function, a method in the class, but it is a ‘special method’ that is automatically called when an object of a class is created. We don’t need to call this function. Whenever a new object of a class is created, the Constructor allows the class to initialize member variables or allocate storage. This is why the name Constructor is given to this special method. Here is a simple constructor class example below,

There are different constructor types in classes and the Copy Constructor is one of these. Copy Constructors not only used in classes but also used with struct and union data types.

The Copy Constructor in classes (class_name) is a non-template constructor whose first parameter is class_name&‍, const class_name&‍, volatile class_name&‍, or const volatile class_name&‍ . It can be used with no other parameters or with the rest of the parameters all have default values.

The Copy Constructor is a constructor type for classes that class_name must name the current class, or it should be a qualified class name when it is declared at namespace scope or in a friend declaration.

Implicitly-Declared Copy Constructor

In C++, the compiler declares a Copy Constructor as a non-explicit inline public member of its class If a copy constructor is not defined for a class type (struct, class, or union), We can Implicitly declare a copy constructor when defining a new class. Remember that copy constructor has this syntax,

and this Copy Constructor will be declared implicitly when declaring a new class as below,

Here is an example,

Here is the full example,

output will be like this.

As in this example, Implicit declared copy constructor does not copy values.

If there are user-defined copy constructors, user can force the generation of the implicitly declared copy constructor with the ‘default’ keyword. Both Implicitly-declared or defaulted copy constructors have an exception specification. Using forced copy construction in myclass as below also outs same results;

Get started building powerful apps with C++Builder!

close

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.

About author

Dr. Yilmaz Yoru has 33+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux, and some other operating systems. He was born in 1974, Eskisehir-Turkey, started coding in college and graduated from the department of Mechanical Engineering of Eskisehir Osmangazi University in 1997. He worked as a research assistant at the same university for more than 10 years. He received his MSc and PhD degrees from the same department at the same university. Since 2012, he is the founder and CEO of Esenja LLC Company. He has married and he is a father of a son. Some of his interests are Programming, Thermodynamics, Fluid Mechanics, and Artificial Intelligence, 2D & 3D Designs, and high-end innovations.
Related posts
C++C++11C++14C++17Generic ProgrammingLearn C++Templates

What Is A Template In C++?

C++C++17Code SnippetComponentsIteratorsLearn C++

What Are The Boost C++ Libraries?

C++C++17Introduction to C++Learn C++Syntax

Learn Bits and How To Use std::bitset In C++

C++C++17IteratorsLearn C++

How To Use Insert In std::map In Modern C++

Worth reading...
Learn about Forced Copy Constructor (Default Copy Constructor) in C++