C++虚函数

    技术2022-05-20  45

    多态性是面向对象设计语言的基本特征,而C++中正是通过虚函数来实现多态的。

     

    关于多态:多态也称为动态联编或迟后联编,因为到底调用哪一个函数,在编译时不能确定,而要推迟到运行时确定。也就是说,要等到程序运行时,确定了指针所指向的对象的类型时(或者是引用时),才能够确定。这样的解释可能还是有点抽象,请看下面的例子:

     

    #include <iostream> using namespace std; class Base { public: void show() { cout<<"这是基类的show()/n"; } }; class My : public Base { public: void show() { cout<<"这是继承类的show()/n"; } }; void test(Base &temp) { temp.show(); } int main() { Base base; My my; test(base); test(my); system("pause"); return 0; }  

    运行结果:

     

     

    当调用上面的这个test()函数时,如何确定temp类型(基类还是派生类)然后调用正确的show()方法呢?-------使用虚函数

    我们在基类的show()函数前加上virtual,如下代码:

    class Base { public: virtual void show() { cout<<"这是基类的show()/n"; } };

    再看看运行结果:

     

     

    这次程序就根据传入对象的类型调用了正确的show()函数了。


    最新回复(0)