c++基础-虚函数

来源:互联网 发布:书法软件哪个最好 编辑:程序博客网 时间:2024/06/15 15:53
#include<stdio.h>class A{public:virtual void Test(){printf("A test\n");}};class B: public A{public:void func(){Test();}virtual void Test(){printf("B test\n");}};class C: public B{public:virtual void Test(){printf("C test\n");}};int main(){C c;((B *)(&c))->func();  ((B)c).func();}

以上代码片输出:



((B *)(&c))->func();   // C test

用基类指针指向派生类对象, 此时func是B中的,由于Test() 为虚函数,所以根据实际对象找到虚函数表,得到C中的虚函数输出 C test


((B)c).func();  // B test

未发生多态行为,就是一个强制类型转换

0 0
原创粉丝点击