C++:不存在默认构造函数?
代码如下//head.h#include<iostream>#include<cmath>usingnamespacestd;classpoint{friendclass...
代码如下
//head.h
#include<iostream>#include<cmath>using namespace std;class point{friend class dis;private: int X; int Y;public: point(int x,int y) {X=x;Y=y;} void show() {cout<<X<<","<<Y<<endl;}};class dis{private: point A; point B;public: dis(point a,point b) {A=a;B=b;} void showdis() {cout<<sqrt(double((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y)))<<endl;}};
错误图片如下:
就算是我初始值,那还是同样的错误
point(int x,int y):X(0),Y(0)
{X=x;Y=y;}
为什么改成
point(int x=0,int y=0) {X=x;Y=y;}
就可以了呢》我是初学者 展开
//head.h
#include<iostream>#include<cmath>using namespace std;class point{friend class dis;private: int X; int Y;public: point(int x,int y) {X=x;Y=y;} void show() {cout<<X<<","<<Y<<endl;}};class dis{private: point A; point B;public: dis(point a,point b) {A=a;B=b;} void showdis() {cout<<sqrt(double((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y)))<<endl;}};
错误图片如下:
就算是我初始值,那还是同样的错误
point(int x,int y):X(0),Y(0)
{X=x;Y=y;}
为什么改成
point(int x=0,int y=0) {X=x;Y=y;}
就可以了呢》我是初学者 展开
展开全部
如果你提供了一个带参数的构造函数,那么编译器不负责提供默认(就是无参)的构造函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你已经定义了一个带参数的构造函数侍伍者point(int x,int y)系统就老薯不会在提供默认构造函数了。你可以参橘春考http://wenku.baidu.com/view/84d3458a6529647d272852dc.html希望对你有帮助,祝你好运,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
point要提供一个复制构造函数,在dis中初始化要采用初始化表的方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询