1,c++自定义无参构造函数后 ,定义一个该类的对象时显示,多个默认构造函数,什么原因呢?
2,相关代码如下:
using namespace std;
class point
{
public:
point();
point(int xx, int yy);
int getx()
{
return x;
}
int gety()
{
return y;
}
private:
int x;
int y;
};
point::point(int xx = 0, int yy = 0)
{
x = xx;
y = yy;
}
point::point()
{
x = 0;
y = 0;
}
int main()
{
point a; ***//出现编译错误***
point b(1, 2);
}
运行后,point a;这句代码编译出错
错误如下:
严重性 代码 说明 项目 文件 行
错误 C2668 “point::point”: 对重载函数的调用不明确 JD_EX e:c++primerjd_exjd_ext11.cpp 39
严重性 代码 说明 项目 文件 行
错误(活动) 类 "point" 包含多个默认构造函数 JD_EX e:c++primerJD_EXJD_EXt11.cpp 39
是需要自己定义一个默认构造函数,point()=defaul:吗?那这个无参的构造函数,该怎么调用呢?
谢谢大神 ,麻烦帮忙解答。。
更多关于default的知识,可以参看这个链接,简单说了一下。http://stackoverflow.com/ques...
下次提问后,看看版面啊。。。。
point::point(int xx = 0, int yy = 0)
{
x = xx;
y = yy;
}
因为你的这个构造函数有默认形参,可以作为无参数的构造函数用,所以你再定义一个无参数的构造函数就是重载失败。并且你一旦定义了构造函数,编译器是不会再合成默认构造函数的。把Point()去掉即可,多余了。
仅供参考。