c++ 多态和继承的可见性

继承可见性:

c++中 public protected private 三种可见性可以分别理解为

完全对外公开,只对子类公开,完全不公开,这里对子类的可见性是完全不受继承时的可见性影响的,就是说无论是public,protected还是private继承,父类public protected属性在子类中时永远可见的,private时永远不可见的。

那么三种继承的可见性就可以理解为:

可见的属性继承为public属性(public继承)

可见的属性继承为protected属性(protected继承)

可见的属性继承为private属性(private属性)

参考文档:

http://www.cnblogs.com/motadou/archive/2010/03/12/1683974.html

多态:

父类中声明的虚函数:非纯虚函数和纯虚函数,在子类中进行重写。当使用父类指针的时侯可以根据虚函数表自动调用符合当前对象的函数。抽象地来说就是多态(polymorphism)就是在c++中使用同一份源码编译出来的程序可以在执行的过程中有不同的行为。就目前我的理解来看,多态就是在使用指针的时候可以正确的使用自身类的函数就算是指针类型不是自己的类型。

只有声明了virtual的函数才能有多态的特性,如果是直接覆盖的话是没有多态的特性的,从外界运行的角度来看,只会调用当前指针所属类型的相应函数。

在c++11里新增了override保留字,可以在子类重写父类虚函数的时候在函数末尾添加override,同样也可以不添加。功能就是提高了代码的可读性,如果不是重写父类虚函数的时候用了override的时候编译器会直接报错,没有override的时候编译器会认为是一个新的函数而通过编译。

 

 

在使用的过程中使用同一继承路径下的指针指向另一个对象的时候,比如下面的继承关系:

A-B-C-D,其中A是父类,D是子类

A* ptr= &d_obj;

在这种情况下,在储存的过程中d_obj这个对象仍然是D类。但是在所有外界来看这个ptr就是一个A类的指针,是无法看到BCD派生的部分的,例外的情况仅出现在使用多态的情况下会查找虚函数表,除此之外行为和A类对象,即使是最后的delete操作。

 

以上纯属个人观点,保证客观正确但不保证概括全面,如果有错误请指出

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值