SystemVerilog中这个this到底怎么回事

在面向对象语言中,this经常用来表示对当前对象的一个引用,可以理解为指向对象本身的一个指针,并且常作为类中方法的隐含形参,通过该形参可以访问对象内部的属性和方法,因此,一般方法对于编译器来说,原型结构如下:

[return_type] func_name(class_type const this,other_args)

其中

  • return_type为方法返回类型
  • class_type当前方法所属的类
  • other_args当前方法其他形参
    那么,this到底有什么作用如何使用呢?本文将通过示例,说明this在SystemVerilog类中如何使用。

this只能在成员方法中使用,当对象的非静态方法中要访问对象的其他成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,即方法对于类的其他成员的访问会通过这个隐含的指针实现访问,下图为方法和访问对象的示意图。
在这里插入图片描述

上图中,当一个对象创建时,并没有为每个对象的方法单独创建空间存放,而是所有对象共用同一个成员方法,因为这些方法对于所有的对象都是一样的,只是传入其中的参数不同而已,方法完全可以通过this指向不同的对象实现对于不同对象不同属性值的访问,这种将方法作为共享的操作实现方


版权声明:本文为weixin_39060517原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。