创建派生类对象this指针指向的问题

water-moon water-moon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
using namespace std;
class base_class
{
public:
base_class(void){
cout << "base_class contruct" <<endl;
this->printdis();
};
void test ()
{
this->printdis();
}
virtual void printdis(){
cout << "base_class print" << endl;
};
~base_class(){
cout << "base_class destroy" <<endl;
};
};
class derivate_class: public base_class
{
public:
derivate_class(void) {
cout << "derivate_class contruct" <<endl;
};
void printdis(){
cout << "derivate_class print" << endl;
};
~derivate_class()
{
cout << "derivate_class destroy" <<endl;
};
};

int main(void)
{
derivate_class derivation;
((base_class *)&derivation) ->printdis();
derivation.test();
return 0;
}

运行结果如图:
粉红标出的是构造函数this->printdis();打印的,红色是derivation.test();打印的。
按我的理解,这里的this指针应该是派生类对象derivation,基类中this->printdis()等同于((base_class *)&derivation) ->printdis();,结果应该都是"derivate_class print" 。不明白为什么运行后这里构造函数打印出来的不对。我跟了一下this和derivation的地址,他们是一样的。
我跟了构造函数中的this和test中的this,都是(base_class * const) 0x22ff20。
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
water-moon
C++ 语言 65,214 成员 250,514 内容