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.
1 2 3 4 5 6 7 8 |
class myclass { public: myclass() { std::cout << "myclass is constructed!\n"; }; }; |
There are different contractor types and the Default Constructor in classes is one of these. This method not only used in classes but also used with struct and union data types.
A Default Constructor is a constructor type in Classes that is called when class is defined with no arguments, or it is defined with an empty parameter list, or with default arguments provided for every parameter. A type with a public default constructor is Default Constructible; There are different methods to use this Default Constructor and one of these is using an Implicitly-Defined Default Constructor. If you are looking for how do we define a default constructor implicitly, here are details.
Implicitly Defined Default Constructor
In C++ programming, If there is no constructor in the class (in the struct or the union), the C++ compiler will always declare a default constructor as an inline public member of that class. If there is a declared default constructor, we can force the automatic generation of a default constructor in a new class by the compiler that would be implicitly declared otherwise with the keyword default. We can also implicitly define (not ‘declare’) a default constructor in another class. If we define a constructor in a class, we can also use this class and its constructor in another class. The difference between the Implicitly Defined Default Constructor and Implicitly Declared Default Constructor is here we defined a new class member and still, our class has its default constructor while it can use the default constructor from its new class member.
Here is an Implicitly-Defined Default Constructor example,
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class my_class { public: my_class() //Default Constructor { }; }; class my_other_class { public: my_class test; // This class has Implicitly-Defined Default Constructor }; |
The example above is same like as below;
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class my_other_class { class my_class { public: my_class() //Default Constructor { }; }; public: my_class test; // This class has Default Constructor }; |
Here is a full Implicitly-Defined Default Constructor example,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> class my_class { public: int start; my_class() { start = 100; }; }; class my_other_class : public my_class { public: my_class def; // This class has Implicitly-Defined Default Constructor }; int main() { my_other_class test; // This class has Implicitly-Defined Default Constructor std::cout << test.def.start ; // Let's check if it worked same as the previously defined one getchar(); return 0; } |
As you see we defined test object with my_other_class and our my_class() constructor is automatically generated in this object when compiled. Please check our “Learn Implicitly Declared Default Constructor in C++” article to understand difference between implicitly declared and implicitly defined default constructors.
Get started building powerful apps with C++Builder!
Design. Code. Compile. Deploy.
Start Free Trial
Free C++Builder Community Edition