c++继承例题...
时间:2010-08-13 来源:Ellison1900
把定义平面直角坐标系上的一个点的类cpoint作为基类,派生出描述一条直线的类cline,则会报错!
再派生出一个矩形类crect。要求成员函数能求出两点间距,矩形周长和面积。
#include<iostream>
#include<cmath>
using namespace std;
class cpoint
{
public:
int x,y;
public:
cpoint(int x=0,int y=0)
{
this->x=x;
this->y=y;
}
};
class cline:public cpoint
{
private:
cpoint p1,p2;
public:
cline(int a=0,int b=0,int c=0,int d=0)
:p1(a,b),p2(c,d)
{}
double length()//求两点间距
{
return sqrt((p2.y-p1.y)*(p2.y-p1.y)+(p2.x-p1.x)*(p2.x-p1.x));
}
};
class crect:public cline
{
private:
cline l1,l2;
public:
crect(int a=0,int b=0,int c=0,int d=0,int e=0,int f=0)
:
l1(a,b,c,d),l2(c,d,e,f)
{}
void girth()
{
cout<<"周长:"<<2*(l1.length()+l2.length()) <<endl;
}
void area()
{
cout<<"面积:"<<l1.length()*l2.length()<<endl;
}
};
int main()
{
crect c(0,0,2,0,2,1);
c.girth();
c.area();
return 0;
}
务必注意:基类的构造函数要有默认参数,这样派生类才能调用基类的构造函数
例如:cpoint(int x=0,int y=0)
{
this->x=x;
this->y=y;
}
如果改为
cpoint(int x,int y)
{
this->x=x;
this->y=y;
}
相关阅读 更多 +