给出如下代码段:
#include <iostream>
#include "stdio.h"
using namespace std;
class A
{
public:
A(int arg):m_a(arg)
{
cout << "constructor of A" << endl;
output();
}
virtual void output()
{
cout << "output A" << endl;
}
virtual void display()
{
output();
}
private:
int m_a;
};
class B : public A
{
public:
B(int arg1, int arg2):A(arg1), m_b(arg2)
{
cout << "constructor of B" << endl;
}
virtual void output()
{
cout << "output B" << endl;
}
private:
int m_b;
};
int main(int argc, char* argv[])
{
B b(1, 2);
b.display();
return 0;
}
这段代码会输出什么?
其实这个问题本质是在A的构造函数及display函数中分别调用的是A类的output函数还是B类的output函数。
输出结果是:
constructor of A
output A
constructor of B
output B
说明A的构造函数中调用的是A类的output函数,display函数中调用的是B类的output函数。