Skip to content
Related Articles

Related Articles

Does C++ compiler create default constructor when we write our own?
  • Difficulty Level : Easy
  • Last Updated : 25 Feb, 2021

In C++, compiler by default creates default constructor for every class. But, if we define our own constructor, compiler doesn’t create the default constructor. This is so because default constructor does not take any argument and if two default constructor are created, it is difficult for the compiler which default constructor should be called.

For example, program 1 compiles without any error, but compilation of program 2 fails with error “no matching function for call to `myInteger::myInteger()’ ” 
Program 1  

CPP




#include<iostream>
 
using namespace std;
 
class myInteger
{
   private:
     int value;
      
     //...other things in class 
};
 
int main()
{
  myInteger I1;
  getchar();
  return 0;
}


Program 2:

CPP




#include<iostream>
 
using namespace std;
 
class myInteger
{
   private:
     int value;
   public:
     myInteger(int v)  // parametrized constructor
     {  value = v;  }
    
     //...other things in class 
};
 
int main()
{
  myInteger I1;
  getchar();
  return 0;
}


Please write comments if you find anything incorrect in the above GFact or you want to share more information about the topic discussed above.
References: 
http://en.wikipedia.org/wiki/Default_constructor 
http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/cplr375.htm
 

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :