首先定义一个类POINT,有两个int型的保护数据成员x、y表示该类对象在二维坐标系中的坐标位置,定义如下三个公有成员函数:
(1) 构造函数:设置点的初始值;
(2)成员函数change改变坐标位置
(3)成员函数show显示点的位置,具体输出形式请参考下面的输出提示;cout<<"("<<x<<","<<y<<")"<<endl;
然后,以类POINT为基类定义派生类CIRCLE,其中增加一个私有数据成员int r表示该圆的半径,定义如下两个公有成员函数:
(1)构造函数:负责调用基类的构造函数及为本类的半径成员初始化
(2)重新定义show函数显示圆心的位置及半径的值,
#include <iostream> using namespace std; class POINT { protected: int x, y; public: POINT (int a, int b) { x = a; y = b; } void change (int a, int b) { x = a; y = b; } void show ( ) { cout<<"("<<x<<","<<y<<")"<<endl; } }; class CIRCLE : public POINT { private: int r; public: CIRCLE (int a, int b,int r) : POINT (a, b) { this->r = r; } void show() { cout<<"the center of the circle is:"<<endl; cout<<"("<<x<<","<<y<<")"<<endl<< "the radius is:"<<r<<endl; } }; int main ( ) { POINT p (2, 3); CIRCLE c (3, 4, 5); cout<<"original p:\n"; p.show (); p.change (20,30); cout<<"changed p:\n"; p.show (); cout<<"original c:\n"; c.show ( ); c.change (30,40); cout<<"changed c:\n"; c.show ( ); return 0; }
关于数据成员:
数据类Data:成员string name,保存姓名;
教师类Teacher:增加成员float sal,保存工资;
学生类Student:增加成员string id,保存学号;
研究生类Postgrad:增加成员 string dn,保存系别;
教师中的在职研究生类Tpost:不另外定义成员。
关于成员函数:
各类定义输出所有数据成员的函数void print()。
#include <iostream> using namespace std; class Data { protected: string name; //姓名 public: void print() { cout<<"name="<<name<<endl; } }; class Teacher : public virtual Data { protected: float sal; //工资 public: void print() { cout<<"sal="<<sal<<endl; } }; class Student : public virtual Data { protected: string id; //学号 public: void print() { cout<<"id="<<id<<endl; } }; class Postgrad : public Student { protected: string dn; //系别 public: void print() { cout<<"dn="<<dn<<endl; } }; //定义一个在职研究生对象,先输入相关信息,再输出。 class Tpost : public Teacher, public Postgrad { public: Tpost() { cin>>name>>id>>dn>>sal; } void print() { cout<<"name="<<name<<endl; cout<<"id="<<id<<endl; cout<<"dn="<<dn<<endl; cout<<"sal="<<sal<<endl; } }; int main() { string name, id, dn; float sal; Tpost tpost; cout<<"The teacher and postgraduate:"<<endl; tpost.print(); return 0; }