构造函数和默认构造函数

class MyClass{
int value;
public:
MyClass(int n):value(n){}
int getValue()const{return value;}
};
则类MyClass的构造函数的个数是______。
A、1个 B、2个 C、3个 D、4个
我认为答案是A,但是很多书答案都是B,说是还有一个默认构造函数。已经定义了构造,怎么还会有默认构造,难道是默认复制?本人小白,求指教

你的理解是对的。

如果在类中没有定义拷贝构造函数,编译器会自行定义一个默认的拷贝构造函数。

如果想深入了解,可以参看
http://quiz.geeksforgeeks.org/copy-constructor-in-cpp/

如果你没有为你的类写任何构造函数,那么编译器将自动为你生成一个默认的无参构造函数,一旦你写了,编译器就不会再为你提供构造函数

利用构造函数对对象中的数据成员赋初值,构造函数功能是实现数据成员的初始化。不需要用户调用它,而是在建立对象时自动执行。
如果你没有写构造函数,系统会给你一个默认的构造函数,但是它什么也不会做,如果你写了构造函数,里面如果有开辟内存,就需要析构函数来对你的函数运行完后做清理工作,如果你没写,系统也会给你一个默认的析构函数,当然,系统给的默认构造函数也不做任何事,可能会导致内存泄漏。
推荐你看一下这一篇博客:http://blog.csdn.net/valdc_morning/article/details/61231548