永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-12-20 08:39
  • 提问者网友:你独家记忆
  • 2021-12-19 09:25
看了孙鑫老师的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");
}

准确说是指向基类和派生类实例化的对象,严谨一些。
最佳答案
  • 五星知识达人网友:神也偏爱
  • 2021-12-19 11:04
首先纠正一点,this指针是不存在属于哪个类的说法的,this一个是编译器保留的静态指针,指向当前操作的对象

第二你的代码有问题,从头到尾就没有出现过真正的对象,只有一个基类的指针,此时执行根本不存在派生类的对象,编译器只能从基类寻找。 还有貌似你的编译器比较宽松啊,我用g++根本不能编译
全部回答
  • 1楼网友:第四晚心情
  • 2021-12-19 12:19
没看懂什么意思?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯