帮忙分析一段C++代码
刚接触C++,碰到一段代码 ,帮忙看下。谢谢了
#include <iostream>
using namespace std;
class A
{
public:
A()
{
doSth();
}
virtual void doSth()
{
cout<<"I am A"<<endl;
}
};
class B:public A
{
public:
virtual void doSth()
{
cout<<"I am B"<<endl;
}
};
int main()
{
B b;
return 0;
}
运行结果:I am A
为什么class B虚函数不执行呢?
[解决办法]
B类继承A类,所以B类的对象应该调用A类的构造函数。如果,想要执行B类中的函数需要明确指明对象b去调用该函数。
个人愚见。
[解决办法]
B b先构造基类对象就是A,A构造函数中doSth调用的是自己的,然后构造子类对象就是B了,B调用的默认的缺省构造函数,当然不执行doSth了