c++学习笔记--多态

    xiaoxiao2021-04-11  33

    这里用一个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; }

    转载请注明原文地址: https://ju.6miu.com/read-667006.html

    最新回复(0)