08-SV面向对象编程的高级技巧指南

1、原始类与扩展类

  (1)原始类被称为父类或者超类,扩展类被称为派生类或者子类。扩展类可以直接访问原始类和其本身的所有变量,应该将原始类中的子程序定义成虚拟的,这样它们就可以在扩展类中重定义。new函数无法扩展,SV始终基于句柄类型来调用new函数。

  (2)扩展类的构造函数

    如果基类构造函数有参数,那么扩展类必须有一个构造函数而且必须在其构造函数的第一行调用基类的构造函数。

  (3)关于句柄

    指向基类(Transaction)的句柄也可以用来指向派生类(BadTr)的对象。当调用tr.calc_crc函数的时候,到底是调用基类中的虚拟函数,还是调用扩展类中扩展的calc_crc,这取决于tr中的对象类型:如果对象是Transaction类型,那么调用Transaction::calc_crc,否则调用BadTr::calc_crc

  

猜你喜欢

转载自www.cnblogs.com/wt-seu/p/12297170.html