c++自定义无参构造函数后 ,定义一个该类的对象时显示,多个默认构造函数,什么原因呢?
PHP中文网
PHP中文网 2017-04-17 14:38:30
0
2
641

1,c++自定义无参构造函数后 ,定义一个该类的对象时显示,多个默认构造函数,什么原因呢?
2,相关代码如下:

include<iostream>

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:吗?那这个无参的构造函数,该怎么调用呢?
谢谢大神 ,麻烦帮忙解答。。

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(2)
阿神

リーリー

デフォルトの詳細については、簡単に説明されているこのリンクを参照してください。 http://stackoverflow.com/ques...


次回質問した後、ページを見てください。 。 。 。

いいねを押す +0
大家讲道理

ポイント::ポイント(int xx = 0, int yy = 0)
{

x = xx;
y = yy;
}
コンストラクターにはデフォルトのパラメーターがあり、パラメーターなしのコンストラクターとして使用できるため、パラメーターなしのコンストラクターを定義します。関数はオーバーロードに失敗しました。また、コンストラクターを定義すると、コンパイラーはデフォルトのコンストラクターを合成しません。 Point() は冗長なので削除してください。
参照のみ。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート