第十三週專案4:形狀類族中的純虛擬函式
阿新 • • 發佈:2019-02-12
問題及程式碼:
/*Copyright (c)2016,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:main.cpp *作 者:崔青青 *完成日期:2016年5月31日 *版 本 號:v1.0 *問題描述: *輸入描述:無 *輸出描述:無 */ #include <iostream> using namespace std; class Shape { public: virtual double area()=0; }; class Circle:public Shape { private: double r; public: Circle(double r0):r(r0){} double area() { return 3.14*r*r; } }; class Rectangle:public Shape { private: double a; double b; public: Rectangle(double a1,double a2):a(a1),b(a2){} double area() { return a*b; } }; class Triangle:public Shape { private: double a; double b; public: Triangle(double a1,double b1):a(a1),b(b1){} double area() { return a*b/2; } }; int main() { Circle c1(12.6),c2(4.9); Rectangle r1(4.5,8.4),r2(5.0,2.5); Triangle t1(4.5,8.4),t2(3.4,2.8); Shape *pt[6]={&c1,&c2,&r1,&r2,&t1,&t2}; double areas=0.0; int i; for(i=0;i<6;i++) { areas=areas+pt[i]->area(); } cout<<"total of all areas="<<areas<<endl; return 0; }
執行結果:
知識點總結:
純虛擬函式的使用,使得程式更加簡便。
學習心得:
純虛擬函式在使用時對於派生類和基類的要求需要掌握。