一本书上写了:派生类对象可以看作基类的对象 ,这是什么意思呢?

joeqi 2003-11-09 09:54:12
派生类对象可以看作基类的对象 ,这是什么意思呢?
...全文
760 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hatia 2003-11-18
  • 打赏
  • 举报
回复
所谓的up_cast,派生类可向上类型转换,当不是纯的继承时则使派生类的接狭窄化;
涉及到对象切片的问题;在多态中,通过虚函数和基类接口实现对同一层次的类用相同的接口;
THINKING IN C++中有的
zhy0101 2003-11-16
  • 打赏
  • 举报
回复
就是把派生类对象当作基类对象来用。对基类对象调用什么就对派生类对象调用什么,不包括基类私有成员
zcs001 2003-11-16
  • 打赏
  • 举报
回复
这就是所谓的is-a关系 
tianxueshan 2003-11-10
  • 打赏
  • 举报
回复
我们知道在面向对象的编程过程中很重要的一点就是代码的重用问题。在继承和派生中。
派生类细化的父类的定义。在C++中有一个切片的概念。也就是说派生类对象在赋值给父类对象的过程中。派生类多余的部分会被切去。只保留父类的部份。因为派生类继承了父类的几乎所有的成员。
我们知道。编绎系统区别对象的方法就是为数据成员分配一定的内存。函数部份则是共享。
所以可以把派生类的对象看成基类的对象。
adams_here 2003-11-10
  • 打赏
  • 举报
回复
派生类对象可以看作基类的对象
这句话可以理解为基类有的(非private)成员变量/成员函数,派生类都有。
adams_here 2003-11-10
  • 打赏
  • 举报
回复
“基类指针可以操作派生类对象”
派生类可以有自己的member,用基类指针操作这些member编译不会通过。
woxihuanbohe 2003-11-10
  • 打赏
  • 举报
回复
为什么用基类指针就可以操作派生类对象呢?
Jinhao 2003-11-10
  • 打赏
  • 举报
回复
说白了就是,用基类指针可以操作派生类对象
bosedom 2003-11-10
  • 打赏
  • 举报
回复
派生类的对象所占的存储空间要比基类的对象大,原因就是派生类继承了基类非私有成员函数和数据。当用基类的指针操纵派生类的对象时,由于对象的头部分是一样的,所以即使有超出基类指针所寻址的部分也能根据偏移量正确寻址。但相反,如果派生类指针指向基类对象,会把一部分不属于的该对象的内存也包括进来。所以派生类指针指向基类对象使用派生类的函数可能会有严重的错误
Wolf0403 2003-11-10
  • 打赏
  • 举报
回复
class Human{virual ~Human(); virtual void Speak() const;}
class Man : public Human {void Speak() const;}

男人还是人,是吧?呵呵。所以可以把男人当人来用
Human * p = new Man;
假设有方法
void SpeakSomething(const Human& _man)
{
_man.Speak();
}
就可以传递 *p 进去。这样就是把 Man 当作 Human 对象使用
bosedom 2003-11-09
  • 打赏
  • 举报
回复
可以用基类的指针指向派生类的对象。这样就可以运用C++中多态的性质。基类的public 和protected的成员函数和成员变量都可以在这个派生类的对象中使用。当然子类可以覆盖。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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