C++初学者指南 第十篇(9)

转载请标明出处:http://blog.csdn.net/zhangxingping
必备技能10.8:指向派生类对象的指针

在继续讨论虚函数和多态性之前,我们有必要讨论一下关于指针的一个重要方面。指向派生类(对象)的指针和指向基类(对象)的指针不像其它类型的指针那样没有什么关系,而是有关系的。通常来讲,一个类型的指针是不能指向另外一种类型的对象的。然而,基类指针和派生类对象则是个例外。在C++中,一个基类的指针是可以指向任何继承了该类的派生类的对象的。例如,有类BD,其中D是从B继承而来的。那么任何B类型的指针都是可以用来指向D类型的对象的。因此,下面的代码段是有效的:

B *p; //B类型的指针

B B_ob; //B类的对象

D D_ob; // D类的对象

p = &B_ob; //p指向B类的对象

p = &D_ob; //p 指向D类的对象,而D类继承了B

基类的指针如果指向的是派生类的对象,那么通过该指针则只能访问该对性从基类中继承的那部分。因此,针对上面的例子,我们可以通过p指针来访问D_ob对象从B类中继承的那部分,而不能通过p访问到D类对象特有的那部分。

还有一点需要注意:尽管基类的指针是可以指向派生类的对象的;但是反之则不行。也就是说,不能通过派生类的指针来访问基类的对象。

我们都知道,指针的加法和减法都是和它的基本类型相关的。因此,当一个基类的指针指向一个派生类的对象的时候,该指针自加或者自减后就不是指向下一个或者前一个派生类的对象了,而是指向的是下一个或者前一个基类的对象。所以,我们可以认为,当基类的指针指向派生类对象的时候,对其进行增加或者减小都是错误的做法。

基类指针可以指向任意的它的派生类的对象,这一点非常重要,也是C++中的一个基础点。正如我们将要学校到的,这种灵活性是C++实现运行时多态性的关键。

对派生类型的引用

和前面描述的指针类似,基类的引用可以被用来对一个派生类的对象进行引用。这点经常被用在函数的参数中。基类引用参数可以接收基类对象作为实参,也可以接收任何基类的派生类的对象作为实参。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值