返回介绍

11.25 类与结构体

发布于 2020-09-09 22:55:50 字数 620 浏览 823 评论 0 收藏 0

SystemVerilog加入了面向对象的类结构。从表面上看,类与结构体似乎提供了等价的功能,似乎只需要其中的一个就足够了。然而,事实并非如此;类在下述四个基本方面与结构体是不同的:

  1. SystemVerilog结构体是严格的静态对象;它们或者在一个静态的存储位置(全局或模块的作用范围)或者在一个自动任务的堆栈中产生。相反,SystemVerilog对象(也就是类实例)则是动态的,它们的声明不会产生对象,产生对象是通过调用new实现的。
  2. SystemVerilog结构体是类型兼容的,只要它们的位尺寸是相同的,因此拷贝具有不同的构成但尺寸相等的结构体是合法的。相反,SystemVerilog对象具有严格强类型。将一种类型的对象拷贝到另外一个类型的对象是不被允许的。
  3. SystemVerilog对象使用句柄实现,因此它提供了类似于C语言指针的功能。但SystemVerilog不允许为其它类型产生句柄,因此,与C语言不同的是,能够保证SystemVerilog句柄是安全的。
  4. SystemVerilog对象构成了面向对象数据抽象的基础,它提供了真正的多态性。类实例、抽象类、以及动态强制类型转换提供了强大的机制,它远远超过了结构体仅能提供的封装机制。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文