C++虚函数实现
虚函数出现的原因 C++多态通过虚函数来实现,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖,或者称为重写。 最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,动态绑定。由于编写代码时不能确定被调用的是基类还是哪个派生类的函数,所以被称为“虚函数”。如果没有使用虚函数的话,即没有利用C++的多态性,则利用基类指针调用相应的函数时,总被限制在基类函数本身,而无法调用到子类中被重写过的函数。 # include <iostream> using namespace std ; class A { public : void foo ( ) { printf ( "A::foo()1\n" ) ; } virtual void fun ( ) { printf ( "A::fun 2\n" ) ; } } ; class B : public A { public : void foo ( ) //隐藏:派生类的函数屏蔽了与其同名的基类函数 { printf ( "B::foo3\n" ) ; } void fun ( ) //多态、覆盖 { printf ( "B::fun4\n" ) ; } } ; int main ( void ) { A a ; B b ; A * p = & a ; p - > foo ( ) ; //输出1