写出程序运行结果#include iostreamusing namespace std;class Apublicvoid virtual fcoutfin class Aendl;;class Bpublic Apublicvoid fcoutfin class Bendl;void fbcoutnormal function fb n;;class Cpublic Apublicvoid f
程序存在语法错误,无法运行。缺少类A中f()函数的闭合括号。正确的程序如下:
#include
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 著作权归作者所有。请勿转载和采集!