C++多态&&virtual的一个例子分析解决方法

C++多态&&virtual的一个例子分析C/C++ code #include iostreamusing std::coutclass P{public:virtual

C++多态&&virtual的一个例子分析

C/C++ code
 #include <iostream>using std::cout;class P{public:virtual void print(){cout << "P";}};class Q: public P{public:virtual void print(){cout << "Q";}};int main(){P * p = new P;Q * q = static_cast <Q *> (p); q->print();        delete p;cout << endl;         q = new Q;        p = q;        q->print();        p->print();        cout << endl;         p = new (q) P;        q->print();        p->print();        cout << endl;         p->~P();        delete q;        return 0;}

请问:输出是什么? 解释下其中vitual函数实现动态调用的原理.谢谢

[解决办法]
virtual function,实现多态,每个含有virtual function的类中都隐式包含着一个静态虚指针vfptr指向该类的静态虚表vtable, vtable中的表项指向类中的每个virtual function的入口地址

[解决办法]
探讨

virtual function,实现多态,每个含有virtual function的类中都隐式包含着一个静态虚指针vfptr指向该类的静态虚表vtable, vtable中的表项指向类中的每个virtual function的入口地址

[解决办法]
google一下虚函数实现原理吧
[解决办法]
Q * q = static_cast <Q *> (p);//这是一个错误的转型! 使用 dynamic_cast 而不是 static_cast 而且转完之后要判断是否是0,如果dynamic_cast 转换失败会返回0
 
q->print();