您的位置:首页 > 其它

System Verilog视频学习笔记(9)- Inheritance

2017-05-13 20:05 246 查看
OOP-Inheritance(面向对象-继承)
内容来自启芯-System Verilog视频

============================================================== 

目录结构:

1、继承

2、多态

3、数据保护

4、总结

 ==============================================================

本章目标:

了解面向对象派生

 

Inheritance继承:子类从父类继承,子类又可以定义新的成员和方法。

1、继承



图1、继承结构
以上父类packet,子类继承父类packet,生成mypacket,子类可以定义自己的属性。

派生的类即子类可以兼容父类。

 

2、多态



图2、函数调用例子
p1.crc = computer_crc();//调用父类computer_crc()函数

p2.crc = computer_crc();//调用子类computer_crc()函数

p1.crc = crc(p1);//调用父类computer_crc()函数

p2.crc = crc(p2);//调用父类computer_crc()函数

以上红色部分为什么调用父类内?因为子类句柄传递给父类,但是packet对象pkt仍是父类对象,他调用的仍是父类的函数。

需要通过Virtual声明。

所以多态需要通过将原函数声明virtual,则新定义的函数可覆盖原有函数。



图3、声明Virtual实现多态
 

3、数据保护

关键字Local



图4、Local例子(子类不能使用父类的变量)
关键字Protected



图5、Protected例子,子类可访问父类变量
另外:子类继承实现新函数时补全方法的参数,在VCS编译中子类继承父类,子类没有父类对应的函数,则VCS将生成对应的函数但没有参数,所以编译时将会发生错误。

 

4、总结

本节介绍了类的继承,继承时方法和成员继承,成员属性local和protected。掌握C++真的很重要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  System Verilog