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
#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) // parameterized 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.