zoukankan      html  css  js  c++  java
  • 关于C++多态的理解

    多态,即多种形态。对于具有继承关系的一类对象,子类表现出了父类的某些特性,但是表现的不一样,这就是多态的现实体现。例如动物可以发声,但是狗是旺旺,狗是动物的一种,但是表现了不同的叫的特点,这就是多态。

    若class B:public A

    A* a=new B();对于这句话该怎么理解?

    1.A* a规定了要分配的存储空间类型是类A的类型,该内存空间只能包含类A规定的属性和方法,A的继承类B以后添加的方法都没有包含进来。

    2.new B()规定了被实例化的对象是B的实例对象,即是类B被分配了内存空间

    1和2两个规定求交集(红色文字求交集),表明B中只有继承自A的方法和属性才能被调用B自己后来添加的新方法是不能被编译通过的,因为该内存空间没有空间分配给除类A以外的方法了。

    因此c++规定:

    1.如果方法需要被重写,那么最好加上virtual关键字,因为该关键字是实现多态的关键,不加也可以覆盖子类方法,但是缺少规范性;

    2.不加virtual的方法,严格上讲最好不要被重写。

    对于变量的理解:

    type a;

    type限定了该变量空间所存储变量需要遵守的规则,如对于int类型需要分配多大的空间;对于class类型,规定了为哪些方法和属性分配空间。

  • 相关阅读:
    通道符和xargs命令
    Linux中sudo的用法
    yum中查找程序由哪个包提供
    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled)
    Centos7中一次性安装开发者工具
    数据库设计步骤
    校验表单demo
    javascript之DOM总结
    javascript之BOM对象总结
    javascript之正则表达式
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8757599.html
Copyright © 2011-2022 走看看