默认构造函数的问题
本帖最后由 qijun4tian 于 2013-09-14 21:15:59 编辑 #include<string>
#include<iostream>
using namespace std;
class A{
public :
A()
{
}
A(int a=0):a(12)
{
cout << a << endl;
}
public:
int a;
};
int main()
{
A aa;
}
编译后
警告1warning C4520: “A”: 指定了多个默认构造函数c:\users\asus\documents\visual studio 2010\projects\copy1\copy1\copy1.cpp16
3IntelliSense: 类 "A" 包含多个默认构造函数c:\users\asus\documents\visual studio 2010\projects\copy1\copy1\copy1.cpp19
错误2error C2668: “A::A”: 对重载函数的调用不明确c:\users\asus\documents\visual studio 2010\projects\copy1\copy1\copy1.cpp19
如果a aa(1);
则没有问题,
我就想问下 第二个带默认实参的构造函数是不是默认构造函数,我这程序里是否存在两个构造函数。
编译环境是vc2010学习版
[解决办法]
刚才说过了啊,默认构造必须全部的参数都默认或者无参数。
只要有1个参数不是默认的,就不是默认构造了。