C++构造函数形参问题!

以下程序不通过!是因为Rectangle构造函数的形参不可以用Point来定义吗??#include<iostream>usingnamespacestd;classPo... 以下程序不通过!是因为Rectangle构造函数的形参不可以用Point来定义吗??
#include<iostream>
using namespace std;
class Point
{ private:
int x,y;
public:
Point(int a,int b){x=a;y=b;}
void Display(){cout<<x<<","<<y<<endl;}
};
class Rectangle
{ private:
Point A,B;
int L;
public:
Rectangle(Point C,Point D,int l)
{ A=C;
B=D;
L=l;}
void Display()
{ A.Display();
B.Display();
cout <<"L="<<L<<endl;
}
};
void main()
{ Point A(10,2),B(20,2);
Rectangle rect(A,B,7);
rect.Display();
getchar();
}
展开
 我来答
百度网友570dd35
2009-04-15 · TA获得超过443个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:177万
展开全部
//* 本结果在编译器下编译通过.
#include<iostream>
using namespace std;
class Point
{
private:
int x,y;
public:
Point(int a,int b){x=a;y=b;}
//* 构造函数重载.
Point(Point& pt)
{
x = pt.x;
y = pt.y;
}
void Display(){cout<<x<<","<<y<<endl;}
};
class Rectangle
{ private:
Point A,B;
int L;
public:
Rectangle(Point C,Point D,int l) : A(C), B(D)
{
A=C;
B=D;
L=l;}
void Display()
{ A.Display();
B.Display();
cout <<"L="<<L<<endl;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
Point A(10,2),B(20,2);
Rectangle rect(A,B,7);
rect.Display();
getchar();
return 0;
}
C++基础知识不强.你的Point A,B是在Rectangle之前构造的,你没有提供默认构造函数,又没有给它传递参数,当然不行了.
总之,你这个问题可以有N种解.我只给出其中一种.
vbtraz
2009-04-15 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4446万
展开全部
Rectangle (Point C, Point D, int l): A(C), B(D), L(l) {}
这样就可以了

如果没有初始化操作,那么在进入这个构造函数内容的时候就会对类的成员变量进行默认的初始化操作, 而Point类没有无参数构造函数,所以A,B无法构造
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式