#include #include using namespace std;

class A{ public: void virtual f(){cout<'f()in class A'<<endl;} };

class B:public A{ public: void f(){cout<'f()in class B'<<endl;} void fb(){cout<'normal function fb ';} };

class C:public A{ public: void f(){cout<'f()in class c'<<endl;} void fc(){cout<'normal function fc'<<endl;} };

void f(A *p){ p->f(); if(typeid(*p)==typeid(B)){ B bp=dynamic_cast<B>(p); bp->fb(); } if (typeid(*p)==typeid(C)){ C bc=dynamic_cast<C>(p); bc->fc(); } }

int main(){ A *pa; B b; C c; pa=&b; f(pa); pa=&c; f(pa); return 0; }

运行结果: f()in class B normal function fb f()in class c normal function fc


原文地址: https://www.cveoy.top/t/topic/nZCY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录