程序存在语法错误,无法运行。缺少类A中f()函数的闭合括号。正确的程序如下:

#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 \n";} };

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 f


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

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