子类继承父类后this指针的问题。
在程序中创建一个子类对象。创建子类对象会调用子类的构造函数,而调用子类的构造函数时会先调用父类的构造函数,那么此时父类构造函数中的this指针指向的是父类对象还是子类对象...
在程序中创建一个子类对象。创建子类对象会调用子类的构造函数,而调用子类的构造函数时会先调用父类的构造函数,那么此时父类构造函数中的this指针指向的是父类对象还是子类对象?
展开
展开全部
“this”,总是本类类型的指针,这个是铁定不变的。你说的这种情况时,此时父类构造函数this指针(父类类型的指针)指向子类对象中的父类部分(意思就是,显示使用this指针只能访问子类中继承自父类的成员)。
构造子类对象,得先构造子类中的父类部分。所有先调用父类构造函数,即(且只能)通过父类构造函数构造子类对象中的父类成分。
构造子类对象,得先构造子类中的父类部分。所有先调用父类构造函数,即(且只能)通过父类构造函数构造子类对象中的父类成分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
执行父类构造函数时this指针为父类指针类型,而执行子类构造函数时this指针类型又变为子类指针类型了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
父类对象.
这个问题 我用多重继承 实验过.
struct T1{
int m;
T1(){ cout << "T1 " << (int)this << endl; }
};
struct T2{
int m;
T2(){ cout << "T2 " << (int)this << endl; }
};
struct T3: public T1, public T2{
int m;
T3(){ cout << "T3 " << (int)this << endl; }
};
int main()
{
T3 t;
system("pause");
return 0;
}
输出结果可以发现, 父类T2和this和子类T3的不同.
可见, 父类的this只是自己的地址.
这个问题 我用多重继承 实验过.
struct T1{
int m;
T1(){ cout << "T1 " << (int)this << endl; }
};
struct T2{
int m;
T2(){ cout << "T2 " << (int)this << endl; }
};
struct T3: public T1, public T2{
int m;
T3(){ cout << "T3 " << (int)this << endl; }
};
int main()
{
T3 t;
system("pause");
return 0;
}
输出结果可以发现, 父类T2和this和子类T3的不同.
可见, 父类的this只是自己的地址.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然是父类的。怎么可能是子类的,那不乱套了。
你可以看看c++对象模型这本书。很经典。
你可以看看c++对象模型这本书。很经典。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询