c++学习笔记--多态

来源:互联网 发布:医疗大数据盈利模式 编辑:程序博客网 时间:2024/06/07 20:31

这里用一个shape类 Rectangle类 Cirle类进行说明



#include<iostream>using namespace std;class Shape{public:Shape(){};virtual ~Shape(){};//虚析构函数 在动态申请空间时候 防止没析构派生类virtual double Area();//虚函数有藏的效果virtual double Zhouchang();private:double area;};double Shape::Area(){return 0.0;}double Shape::Zhouchang(){return 0.0;}class Rectangle:public Shape{public:Rectangle(double a,double b):chang(a),kuang(b){}virtual ~Rectangle(){};virtual double Area();//事实上 virtual 在子类可以不写 但是养成显式说明的习惯virtual double Zhouchang();private:double chang;double kuang;};double Rectangle::Area(){return chang*kuang; }double Rectangle::Zhouchang(){return 2*(chang+kuang);}class Cirle:public Shape{public:Cirle(double a):riadus(a){}virtual ~Cirle(){}virtual double Area();virtual double Zhouchang();private:double riadus;};double Cirle::Area(){return 3.14*riadus*riadus;}double Cirle::Zhouchang(){return 2*3.14*riadus;}int main(){Shape *a = new Rectangle(1,2);cout<<"Rectangle的面积和周长分别为:"<<endl;cout<<a->Area()<<endl;cout<<a->Zhouchang()<<endl;delete a;//虚析构函数 在动态申请空间时候 防止没析构派生类Shape *b= new Cirle(1);cout<<"Cirle的面积和周长分别为:"<<endl;cout<<b->Area()<<endl;cout<<b->Zhouchang()<<endl;delete b;return 0;}


0 0
原创粉丝点击