Does C++ compiler create default constructor when we write our own?

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.

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



filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right




Program 2

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.