1、结构体和类的关系(简单说明):
结构体:简单地将不同类型的几个数据放在一起,使得它们的集合体具有某种特定的意思(只包含结构体变量);与结构体相对应的是一些函数操作。对于这些函数,如果没有这些定义的结构体变量,它们就无法使用;对于结构体变量来说,如果没有这些函数,那么结构体也没有任何意义。
class:由于结构体和函数的关系如此紧密,所以面向对象的开创者们开创了class的概念;class将结构体和它相应的函数集合在一起,成为一种新的数据组织性质。
2、类的三大特征:封装、继承、多态
封装:自己定义的class一般是全局可见的,所以class中的变量有可能导致全局变量导致的致命问题(UVM_p_355);所以在class中定义了私有变量这一类型,class中成员变量、函数/任务都可以定义为local类型;
继承:子类 extern 父类,父类中的变量、函数/任务在子类中都是可见的;
多态:子类向父类的转换可以由系统自动完成,父类向子类的转换需要使用cast转换符来完成(这里的转换需要自己手写函数,对于复杂的class,转换函数比较复杂,并且转换函数兼容性比较差);为自动实现父类向子类的转换,诞生了虚函数,只需要在定义函数的时候在前面加上virtual即可;
3、cast转换符
常使用方式:if(cast(目的,源)),如果源头可以转换成目的端,实现转换,并且返回值为1,否则转换报错,并返回0;