读书人

这个为什么会发出警告呢小弟我看不出

发布时间: 2012-06-17 21:02:01 作者: rapoo

这个为什么会发出警告呢,我看不出问题?

C/C++ code
struct Point{    int a;    int b;    Point(int c=1)    {        a=c;        b=c;    }    Point()    {        a=100;        b=123;    }    Point(int x,int y)    {        a=x;        b=y;    }    void Output()    {        cout<<a<<endl<<b<<endl;    }    void Output(int x,int y)    {        a=x;        b=y;        cout<<a<<endl<<b<<endl;    }    ~Point()    {        cout<<"删除该类..."<<endl;    }};


警告是如下:
warning C4520: 'Point' : multiple default constructors specified

警告 C4520, 类Point: 多重的默认构造函数不够明确?
我自己觉得这里三个构造函数没什么问题,一个不带参数,一个1个参数,一个两个参数。
为什么会发出警告呢。


[解决办法]
Point(int c=1)
{
a=c;
b=c;
}

你这里 C = 1 带了缺省默认参 和不带参的构造引发的不明确
[解决办法]
当你调用无参构造的时候,根本不知道是调用第一个还是第二个,这时候编译器直接给error都不过分

读书人网 >C++

热点推荐