首先,上代码(还是代码引发的血案)
class A{public: A(){ this; print(); } virtual void print(){ this; cout<<"A"<
B b(3);
b.think();
输出的结果:
A
B
为什么会出现这种情况呢?
因为子类并不继承父类的构造函数和析构函数!!!
相反会继承成员函数和虚函数,
在执行子类的构造函数时,会调用父类的构造函数,记住,是调用,也就是A::A(),这样一来,是进入了A类的作用域,this指针也就是A类对象的this指针
而执行成员函数时,因为继承的关系,所以一直处于子类的作用域,
记住,只要是子类继承父类,除了构造函数和析构函数之外,根本不存在父类的作用域,this指针全部都是子类对象的指针!!!!