C++虚函数

来源:互联网 发布:seo综合查询5118 编辑:程序博客网 时间:2024/05/15 23:52

 

通过引用或指针调用虚函数时,编译器将生成代码,在运行时确定调用哪个函数。虚函数需要在函数声明前面加上virtual,在派生类类函数重定义中不需添加virtual关键字。如果一个函数在基类中被声明为virtual,那么在所有的派生类中它都是virtual的。编译器会维护一个虚函数表vftable。有多少个虚函数就会有多少个对应的虚函数项,比如vs中用_vfptr指针表示

 

#include<iostream>using namespace std;class A{public:A(){}//虚函数也要写函数体//写成virtual void test();通不过编译virtual void test(){cout<<"A"<<endl; }};class B:public A{public:B(){}void test(){cout<<"B"<<endl;}};class C:public A{public:C(){}void test(){cout<<"C"<<endl;}};int main(){//动态绑定A *a=new C();//输出C    a->test();//输出BA *b=new B();b->test();//下列代码静态绑定//因此test方法调用的是父类A的方法A m;C n;m=n;m.test();//下列代码动态绑定//输出CA *m1;C n1;m1=&n1;m1->test();cin.get();return 0;}



 

 

 

原创粉丝点击