ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**代码**: ~~~ #include <iostream> using namespace std; class A { public: A() { Print(); } virtual void Print() { cout<<"A is constructed.\n"; } }; class B: public A { public: B() { Print(); } virtual void Print() { cout<<"B is constructed.\n"; } }; int main() { A* pA = new B(); delete pA; return 0; } ~~~ (感谢网友提供的题目) **疑**:以上代码输出结果是? 输出结果如下: A is constructed. B is constructed. 解释:当new B()时,因为B继承了A,所以编译器首先调用A的构造函数,A的构造函数里是调用A类里的Print(),所以首先输出A is constructed ,然后调用的是B的构造函数,此时Print虚函数指针已指向B的void print(),所以输出B is constructed。 ======= welcome to my HomePage([*http://blog.csdn.net/zhanxinhang*](http://blog.csdn.net/zhanxinhang)) to have a communication =======