public:
CTeacher()
{ cout<<\年龄:\ cin>>age; }
void output()
{ CPerson::output();
cout<<\年龄:\ } };
void main()
{ CPerson person1; person1.output(); CStudent stu; stu.output();
CTeacher teacher; teacher.output();
}
27. 把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRecto要求成员函数能求出两点间的距离、矩形的周长和面积 等。设计一个测试程序,并构造完整的程序。
#include
class CPoint //声明基类 { protected: int x0,y0; public:
CPoint(int a=0,int b=0) { x0=a;
y0=b;
}
void output()
{
cout<<\ cout<<\ } };
class CLine:public CPoint {
private: int x1,y1;
public: CLine(int x,int y, int u=0, int v=0):CPoint(x,y) { x1=u; y1=v; }
void output() { CPoint::output();
cout<<\ cout<<\ }
double length()
{
return (double)sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) ); }
};
class CRect:public CPoint {
private: int x1,y1;
public:
CRect(int x,int y, int u=0, int v=0):CPoint(x,y) { x1=u; y1=v; } float length() };
{
return (float)(2*((x1-x0)+(y1-y0))); }
float area()
{
return (float)(x1-x0)*(y1-y0); }
void main()
{
CLine l(1,0,1,1);
cout<<\长度=\ CRect rect(0,1,4,10);
cout<<\周长=\ cout<<\面积=\ }
28. 定义一个字符串类CStrOne,包含一个存放字符串的数据成员,能够通过构造函数初始化字符串,通过成员函数显示字符串的内容。在此基础上派生出CStrTwo类,增加一个存放字符串的数据成员;并能通过派生类的构造函数传递参数,初始化两个字符串,通过成员函数进行两个字符串的合并以及输出。(字符串合并可使用标准库函数strcat,需要包含头 文件string.h)
#include
char *pstr; public: CStrOne( char str[ ]) { pstr=str; } void show()
{ cout<<\ } };
class CStrTwo:public CStrOne {
char *newpstr;
public: CStrTwo( char str1[ ],char str2[ ]):CStrOne(str1)
{ newpstr=str2; } void show()
{ cout<<\ cout<<\
}
void joint()
{ char temp[100];
strcpy(temp, pstr);
newpstr=strcat(temp,newpstr); cout< void main() { CStrTwo str(\ str.show(); str.joint(); } 2.3 多态和虚函数 29.什么是多态性? 所谓“多态性”就是不同对象收到相同的消息时,产生了不同的动作。这里的消息主要是指对类的成员函数的调用,因此的函数重载就是多态性的表现。 30.什么是虚函数?为什么要定义虚函数? 在函数的声明时,在函数名前面加上vitual就实现了虚函数的声明。通过虚函数和继承,可以实现运行时的多态性。即在程序执行前,根据函数和参数还无法确定应该调用哪一个函数,必须在程序的执行过程中,根据执行情况动态地确定。 31.什么是纯虚函数?什么是抽象类? 声明纯虚函数的一般格式为: virtual 函数类型 函数名(形参表)=0; 它与一般虚函数不同的是:在纯虚函数的形参表后面多了个“=0”。把函数名赋于0,本质上是将指向函数的指针的初值赋为0,纯虚函数不能有具体的实现代码。 抽象类是指至少包含一个纯虚函数的特殊的类。它本身不能被实例化,也就是说不能声明一个抽象类的对象。必须通过继承得到派生类后,在派生类中定义了纯虚函数的具体的实现代码,才能获得一个派生类的对象。 32.分析下列程序的结果。 #include