本文主要是介绍代码疑云(7)-构造函数在类继承时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码:
1. #include <iostream>
2. using namespace std;
3. class A
4. {
5. public:
6. A()
7. {
8. Print();
9. }
10. virtual void Print()
11. {
12. cout<<"A is constructed.\n";
13. }
14. };
15.
16. class B: public A
17. {
18. public:
19. B()
20. {
21. Print();
22. }
23.
24. virtual void Print()
25. {
26. cout<<"B is constructed.\n";
27. }
28. };
29.
30. int main()
31. {
32. A* pA = new B();
33. delete pA;
34.
35. return 0;
36. }
(感谢网友提供的题目)
疑:以上代码输出结果是?
输出结果如下:
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。
这篇关于代码疑云(7)-构造函数在类继承时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!