C++ How To Program整理(9)

来源:互联网 发布:淘宝u站中心官网 编辑:程序博客网 时间:2024/06/05 02:40

@polymorphism,使能够进行通用化编程,在处理同一个类的(继承)层次结构下的对象时,像是基类的对象一样。
@同一个消息发送给不同的对象,会有不同的处理结果,此所谓多态性。
@被调用的功能取决于用来调用函数的句柄,而不是句柄所指向的类型。
  例如基类Commission和派生类Employee都有print函数
    Commission *commission;
    Employee  employee;
   
    commission=&employee;
    commission->print();
    则是调用的基类的print。

@利用基类指针,编译器只允许调用基类的成员函数。   
@便宜器也允许通过指向派生类对象的基类指针访问派生类对象的成员,但是前提是要对基类指针强制转换成派生类指针,这就是向下强制类型转换。

  
@如果使用virtual函数,调用哪个版本的virtual函数就由句柄所指向的对象的类型来决定,而非句柄的类型。 
@如果一个函数声明为virtual,那么在整个继承层次中即使派生类在重写时没有显示的将它声明为virtual的,它都是virtual的,当然,为了易读性

和可理解性,最好在每一级都显示的声明为virtual。
@当派生类没有重写基类的virtual函数时,派生类就会简单的继承基类的virtual函数的实现。
@使用virtual函数动态绑定只能通过指针来完成。
@抽象类不能用来实例化对象,构造抽象类的目的是为其他类提供合适的基类。
@通过声明类的一个或多个virtual函数为纯virtual,可以是一个类称为抽象类,纯virtual函数是在声明时初始化为零的函数
  例如:virtual void func() const =0;
“=0”称为纯指示符,纯virtual函数不提供函数的具体实现,每个派生类必须重写所有基类的纯virtual函数。
@virtual函数和纯virtual函数的区别是:virtual函数提供了函数的实现,并且派生类可以重写也可以不重写,都是具体类(可以定义对象),纯

virtual函数不提供实现,派生类如果不重写这些函数,那么派生类还是抽象类。

@尽管不能实例化抽象基类,但是可以用它声明指针和引用。
@如果一个类含有virtual函数,该类需要踢狗一个irtual析构函数,这可以保证当一个派生类的对象通过基类指针删除时,派生类的析构函数会被调

用。

 

 

原创粉丝点击