在C++下如何取父类?

playboxer 2003-07-17 08:04:30
我现在有一个类CDistributeBox(),继承了CDevice().
在CDistributeBox中我如何取得父类的指针?
...全文
441 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookuy 2003-07-19
  • 打赏
  • 举报
回复
楼上的和以下所说,都未经过证实,呵呵,权当讨论用。
估计有些地方有错,请大家指正。

派生类对象指针注意事项
1.基类对象的指针可以指向她的公有派生类对象(子类,习惯这样说。以下相同),不可指向派生类对象的私有成员。
2.派生类对象的指针不可以指向基类的对象
3.基类对象的指针,当她要指向派生类对象时,只能用她来访问派生类从基类继承来的成员,不可直接访问公有派生类中特定的成员。间接访问方法就是楼上面说的通过类型转换为派生类指针
((CDistributeBox *) ptr)->show2();
hookuy 2003-07-19
  • 打赏
  • 举报
回复
我现在有一个类CDistributeBox(),继承了CDevice().
在CDistributeBox中我如何取得父类的指针?

在子类中取得调用基类指针
//.....
public:
void show();
void show1();
}
class CDistributeBox:public CDevice{
//.....
public:
void show();
void show2();
}
int main()
{
CDevice obj1,*ptr; //定义基类指针ptr
CDistributeBox obj2;
ptr=&obj1; //将指针指向obj1对象
ptr->show();
ptr->show1();
ptr=&obj2; //将指针指向obj2对象

ptr->show();//调用obj2从基类继承来的成员函数

((CDistributeBox *)ptr)->show();//调用obj2对象的特定成员

((CDistributeBox *) ptr)->show2();//调用obj2成员函数
retrun 0;
}

han.bingtao 2003-07-19
  • 打赏
  • 举报
回复
sorry,理解错了
han.bingtao 2003-07-19
  • 打赏
  • 举报
回复
像Java那样的类对象?
bugbugbug 2003-07-18
  • 打赏
  • 举报
回复
子类对象本身就是父类对象加上子类扩展数据成员,为什么还要取?
MatrixCpp 2003-07-18
  • 打赏
  • 举报
回复
搞不清楚你什么意思,取得父类的指针?

class CDistributeBox : CDevice{

...

private:
CDevice* p; //不就是这样取得父类指针?
}

CDistributeBox a;
a.p //是这个意思不?
zheng_can 2003-07-17
  • 打赏
  • 举报
回复
用 reinterpret_cast<CDevice*>( this )
liao2001 2003-07-17
  • 打赏
  • 举报
回复
试试:
CDevice::this
wintersun 2003-07-17
  • 打赏
  • 举报
回复
搞不懂你什么意思?
这种提法本身有问题.

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧