第十三週上機實踐——專案3-形狀類族中的純虛擬函式
阿新 • • 發佈:2019-01-30
/*
*Copyright (c)2016,煙臺大學計算機與控制工程學院
*All rights reserved.
*檔名稱:main.cpp,Shape.h,Shape.cpp
*作 者:郭永恆
*完成日期:2016年5月28日
*版 本 號:v1.0
*
*問題描述:定義抽象基類Shape,並派生出三個類,Circlr,Rectangle,Triangle
*/
Shape.h
Shape.cpp#ifndef SHAPE_H_INCLUDED #define SHAPE_H_INCLUDED class Shape { public: virtual double area() = 0; }; class Circle:public Shape { public: Circle(double r = 0):radius(r){} double area(); private: constexpr static double PI = 3.1415926; double radius; }; class Rectangle:public Shape { public: Rectangle(double h = 0,double w = 0):height(h),width(w){} double area(); private: double height; double width; }; class Triangle:public Shape { public: Triangle(double bM = 0, double h = 0):bottomMargin(bM),height(h){} double area(); private: double bottomMargin; double height; }; #endif // SHAPE_H_INCLUDED
#include "Shape.h"
double Circle::area()
{
return radius * radius * PI;
}
double Rectangle::area()
{
return height * width;
}
double Triangle::area()
{
return (height * bottomMargin)/2;
}
main.cpp
#include <iostream> #include "Shape.h" using namespace std; 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; for(int i = 0; i < 6; ++i) areas += pt[i]->area(); cout << "total of all areas =" << areas << endl; return 0; }
執行結果: