日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++ 形状类继承

發布時間:2025/5/22 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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++ 形状类继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。