Does compiler create default constructor when we write our own?

1.7

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

#include<iostream>

using namespace std;

class myInteger
{
   private:
     int value;
     
     //...other things in class  
};

int main()
{
  myInteger I1;
  getchar();
  return 0;
}



Program 2

#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

GATE CS Corner    Company Wise Coding Practice

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

Recommended Posts:



1.7 Average Difficulty : 1.7/5.0
Based on 49 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.