永发信息网

C++父子类中this指针指向问题。

答案:2  悬赏:0  手机版
解决时间 2021-12-20 08:39
看了孙鑫老师的C++教程视频,里面提到CWinApp构造函数中的this指针是指向派生类的,我自己尝试写了一段代码测试,结果是指向基类,如果将基类的output()函数写成虚函数,输出结果的确是指向派生类,但这只能说明C++的多态性,并不能说明基类中this指向派生类啊,费解。

#include ;
using namespace std;

class Father;
Father * p;

class Father
{
public:
Father()
{
p = this;
}
void output()
{
cout << "this指向基类" << endl;
}
};

class Son : public Father
{
public:
void output()
{
cout << "this指向派生类" << endl;
}
};

void main()
{
p->output();
system("pause");
}

准确说是指向基类和派生类实例化的对象,严谨一些。
最佳答案
首先纠正一点,this指针是不存在属于哪个类的说法的,this一个是编译器保留的静态指针,指向当前操作的对象

第二你的代码有问题,从头到尾就没有出现过真正的对象,只有一个基类的指针,此时执行根本不存在派生类的对象,编译器只能从基类寻找。 还有貌似你的编译器比较宽松啊,我用g++根本不能编译
全部回答
没看懂什么意思?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
万盛区交巡警支队办公地址在什么地方?我要处
我跟我的女人,也就是第三者,经常吵架该怎么办
人肉搜索是什么意思啊
巴南区交巡警支队地址在哪?我要去那里办事
直接选举比间接选举好,更能充分表达选民的意
中国山水诗的艺术脉络阅读答案
朝鲜哪些地方非常值得去
下面说法中说法正确的是A.做功和热传递在改变
小满黑龙江吃什么
VB中代码Start=LBound(a)Finish=ubound(a)是
黔江区交巡警支队办公位置在哪啊?好找么?
某同学拟选择一种半透性的膜材料,用于自制渗
德拉诺飞行,声望用军团勋章,现在划算吗?
公元15191522年间,首次实现人类环球航行,从
拍手称快的意思是什么
推荐资讯
远嫁他乡好吗?有个我男朋友谈了三年多了,我
早上空腹喝牛奶好吗,有没有什么危害呢
银行挂号信是什么意思
男生因为女生和自己哥们亲近忽略自己,为什么
男主人1962年10月,女主人1963年5月21.儿子199
湖南省慈利县烟草专卖局办公位置在哪啊?好找
Since nobody gave him any help, hehave don
一件商品按进价提高40%后标价,然后再打八折
他说的话令人十分惊异的异是什么意思?
朝花夕拾共多少篇
东海社区居委会位置在什么地方啊,我要过去办
杞县城市管理监察大队在什么地方啊,我要处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?