首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

默认构造函数的有关问题

2013-09-24 
默认构造函数的问题本帖最后由 qijun4tian 于 2013-09-14 21:15:59 编辑#includestring#includeiostrea

默认构造函数的问题
本帖最后由 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学习版
[解决办法]

引用:
那A(int b,int a=0)

刚才说过了啊,默认构造必须全部的参数都默认或者无参数。
只要有1个参数不是默认的,就不是默认构造了。

热点排行