欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

C++ 形状类继承

发布时间:2025/5/22 74 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++ 形状类继承 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

声明一个 形状(Shape) 抽象类,由其派生出点(Point)类,和直线(Line) 类,三个类均有成员函数Draw(),其中Shape类的Draw()为纯虚函数。给出的主函数在输出样例之后。

输入描述

输入一个不大于100的正整数n,接下来n组数据。
每组数据先输入字符"p"或"l"。如果输入"p",则接下来输入2个正整数为点的坐标;如果输入"l",则接下来输入4个正整数为直线两个端点的坐标

输出描述

依次输出所有点和直线

输入样例

3 p 1 2 l 5 6 7 8 p 3 4

输出样例

Draw a point (1,2) Draw a line (5,6) to (7,8) Draw a point (3,4) 主函数如下: int main(){ Shape *p[100]; int x1,y1,x2,y2,n=0;char c;cin>>n;for(int i=0;i<n;i++){cin>>c;if(c=='p'){cin>>x1>>y1;p[i]=new Point(x1,y1);}else if(c=='l'){cin>>x1>>y1>>x2>>y2;Point p1(x1,y1),p2(x2,y2);p[i]=new Line(p1,p2);}}for(int i=0;i<n;i++){p[i]->Draw(); delete p[i];} }

程序代码

#include <iostream>using namespace std;class Shape{ // 抽象类 public: virtual void Draw() = 0; // 纯虚函数 };class Point:public Shape{public: Point(int a, int b):x(a), y(b){}void Draw(){cout << "Draw a point(" << x << "," << y << ")\n"; }friend ostream& operator << (ostream& o, Point& p);~Point(){}private:int x, y; };ostream& operator<<(ostream& o, Point& p){o << "(" << p.x << "," << p.y << ")";return o << endl; }class Line:public Shape{public:Line(Point& aa, Point& bb):a(aa), b(bb){}void Draw(){cout << "Draw a line" << a << "to" << b << endl;}~Line(){} private:Point a, b; };int main(){ Shape *p[100]; int x1, y1, x2, y2, n = 0;char c;cin >> n;for(int i = 0; i < n; i++){cin >> c;if(c == 'p'){cin >> x1 >> y1;p[i] = new Point(x1, y1);} else if (c == 'l'){cin >> x1 >> y1 >> x2 >> y2;Point p1(x1, y1), p2(x2, y2);p[i] = new Line(p1, p2);}}for(int i = 0;i < n; i++){p[i] -> Draw(); delete p[i];} }

总结

以上是生活随笔为你收集整理的C++ 形状类继承的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。