先建立一个点类Point包含数据成员xy坐标点。以它为基类派生出圆类Circle增加数据成员radius半径再以Cirlcle类为直接基类派生出圆柱体类Cylinder再增加数据成员height高。要求1每个类都有构造函数用于从键盘获取数据的成员函数set用于显示数据的成员函数display。2用虚函数实现各类对象信息的输入输出。
#include
class Point { protected: double x, y; public: Point(double xx = 0, double yy = 0):x(xx), y(yy) {} virtual void set() { cout << "请输入坐标(x,y): "; cin >> x >> y; } virtual void display() { cout << "(" << x << "," << y << ")"; } virtual ~Point() {} };
class Circle: public Point { protected: double radius; public: Circle(double r = 0):radius(r) {} void set() { Point::set(); cout << "请输入半径: "; cin >> radius; } void display() { cout << "圆心坐标为"; Point::display(); cout << ", 半径为" << radius; } virtual ~Circle() {} };
class Cylinder: public Circle { private: double height; public: Cylinder(double h = 0):height(h) {} void set() { Circle::set(); cout << "请输入高: "; cin >> height; } void display() { cout << "圆柱体底面圆心坐标为"; Point::display(); cout << ", 半径为" << radius << ", 高为" << height; } ~Cylinder() {} };
int main() { Point *p; Circle c; Cylinder cy; p = &c; p->set(); p->display(); p = &cy; p->set(); p->display(); return 0;
原文地址: http://www.cveoy.top/t/topic/c1wK 著作权归作者所有。请勿转载和采集!