关于c++子类继承的this指针的问题

[复制链接]
查看11 | 回复2 | 2016-10-4 19:49:25 | 显示全部楼层 |阅读模式
基类指针在程序运行的时候的确指向的是一个派生类的对象,但指针的类型仍然是基类指针。C++是一种强类型语言,因此不能用基类指针类型的指针直接调用派生类;而且,同一个类可能有多种不同的派生类,因此不知道实际指向的会是哪个派生类。如果确信是某个派生类的话,可以用这样的方法来调用:((CB*)this)->b = 1;或者(dynamic_cast(this))->b = 1;即首先进行一次指针的强制类型转换。注意如果在构造函数中的话,CB的部分现在还是没有初始化的,因此即使读出b的数据,也不会是2。因为按照C++的标准,构造函数执行的顺序是从基类到派生类。...
回复

使用道具 举报

千问 | 2016-10-4 19:49:25 | 显示全部楼层
首先你要明确一点,this指针属于某一具体对象,CB cb定义时,this指针属于cb,可以调用cb的数据和函数成员,CD cd定义时,this指针属于cd,可以调用cd的数据和函数成员。CD(){
d=1;
coutbb}这样不行吗...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行