定义一个点类Point包括x坐标和y坐标(int)。定义一个圆类Circle,

【程序设计】---------------------------------------------------------题目:定义一个点类Point... 【程序设计】
---------------------------------------------------------

题目:
定义一个点类Point包括x坐标和y坐标(int)。定义一个圆类Circle,有数据成员半径
和表示圆心坐标的点类对象。圆类成员函数包括构造函数、求面积的函数和输出显示圆心
坐标及圆半径的函数。
输出结果见样张.JPG
-------------------------------------------------------*/
#include <iostream>
using namespace std;
const double PI=3.14159;

/**********Program**********/
class Point
{
int x,y;
public:
Point(int xx=0,int yy=0)
{x=xx;
y=yy;}
void SetP(int xx=0,int yy=0)
{x=xx;
y=yy;}
int getX()
{return x;}
int getY()
{return y;}

};

class Circle
{
int radius;
Point p1;
public:
Circle(Point pp,int rr)
{p1=pp;
radius=rr;}
Circle(){radius=0;} //这里为什么要加上Circle(){radius=0;} ?
void show();

double getArea()
{return radius*radius*PI;}

void SetCC(Point pp,int rr)
{p1=pp;
radius=rr;}

};

/********** End **********/

void Circle::show()
{
cout<<"圆心X坐标="<<p1.getX()<<",圆心Y坐标="<<p1.getY()<<endl;
cout<<"圆半径="<<radius<<endl;
}
int main()
{

Point p1(9,2),p2; //9为x坐标,2为y坐标
Circle c1(p1,7),c2; //7为半径 p1为圆心点
c1.show();
cout<<"圆的面积="<<c1.getArea()<<endl;
p2.SetP(1,1);//改变圆心坐标
c2.SetCC(p2,4);//以p2为圆心坐标,改变c2的半径
c2.show();//显示c2
cout<<"圆的面积="<<c2.getArea()<<endl;
return 0;

}

我想知道,为什么Circle类里面为什么要加上Circle(){radius=0;}?不加就会出现“no appropriate default constructor available”?
本人C++初学者,请说的简单,详细一些
展开
 我来答
寒寒家
2015-01-15 · TA获得超过2921个赞
知道大有可为答主
回答量:1482
采纳率:100%
帮助的人:1990万
展开全部
首先,类一般是有默认的无参构造函数的,但是因为定义了Circle的有参构造函数,Circle(Point pp,int rr),所以系统不会在生成默认的无参构造函数

然后因为在main函数中有: Circle c1(p1,7),c2;其中的c2并没有给它参数,系统会认为它使用的是无参构造函数

所以这就原因了。如果不加上Circle(){}的话,系统会认为c2是不合法的,因为没有它的无参构造函数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式