c++虚函数的学习

    xiaoxiao2023-10-28  180

    1.虚函数

    #include<iostream.h> class Base { public: void print() { cout<<"Base"<<endl; } }; class Son:public Base { public: void print() { cout<<"Son"<<endl; } }; void fun(Base *obj) { obj->print(); } int main() { Base base; Son son; fun(&base); fun(&son); return 0; }

    类Base和Son中都有print方法,Son继承Base类。在主函数中分别建立Base和Son的对象,在fun函数中调用对象的print()方法。运行结果如下

    从结果中可以看出不论传的是父对象的地址还是子对象的地址,最终调用的都是父对象的print()方法。如果希望传父对象时调用父对象print()方法,传子对象时调用子对象的print()方法。则只需要将父类的print方法声明成虚函数就行。virtual void print(){}。

    2.纯虚函数

    (1)纯虚函数的定义

    virtual 返回类型 函数名 (<参数>)=0;  

    #include<iostream.h> class Shape { public: virtual void show()=0; }; class Circle:public Shape { public: void show() { cout<<"Circle"<<endl; } }; class Rect:public Shape { public: void show() { cout<<"Rect"<<endl; } }; void fun(Shape *shape) { shape->show(); } int main() { //Shape s;//纯虚函数的类不能创建对象 Circle circle; Rect rect; fun(&circle); fun(&rect); return 0; }

     

    有纯虚函数的类不能创建对象。在基类中只作方法的声明,具体的实现要由其子类来实现。

     

    转:https://blog.csdn.net/mxway/article/details/9672237

    最新回复(0)