Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在SystemVerilog中,虚拟类和抽象类相同吗?_Oop_System Verilog_Verification - Fatal编程技术网

Oop 在SystemVerilog中,虚拟类和抽象类相同吗?

Oop 在SystemVerilog中,虚拟类和抽象类相同吗?,oop,system-verilog,verification,Oop,System Verilog,Verification,请帮助我了解SystemVerilog中虚拟类的需求。 对于抽象类,我们可以使用SystemVerilog中的接口。这两者有什么区别 是的,SystemVerilog中的抽象类与虚拟类相同。java使用关键字“抽象”,但是C++等其他语言没有特定的关键字。SystemVerilog重新使用关键字virtual,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。 抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法

请帮助我了解SystemVerilog中虚拟类的需求。

  • 对于抽象类,我们可以使用SystemVerilog中的接口。这两者有什么区别


是的,SystemVerilog中的抽象类与虚拟类相同。java使用关键字“抽象”,但是C++等其他语言没有特定的关键字。SystemVerilog重新使用关键字
virtual
,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。 抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法。像UVM这样的基类库充满了抽象类,并且具有必须重写的方法,如复制或打印方法。
仅包含纯虚拟方法的抽象类称为
接口类
,您可以定义一个实现多个接口类的接口类。这几年有很多关于这个话题的论文

是的,SystemVerilog中的抽象类与虚拟类相同。java使用关键字“抽象”,但是C++等其他语言没有特定的关键字。SystemVerilog重新使用关键字
virtual
,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。 抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法。像UVM这样的基类库充满了抽象类,并且具有必须重写的方法,如复制或打印方法。
仅包含纯虚拟方法的抽象类称为
接口类
,您可以定义一个实现多个接口类的接口类。这几年有很多关于这个话题的论文

感谢@dave_59解释并提供这些论文的链接。@dave_59我要小心地说,构造函数是受保护的,正因为如此,您无法直接构造它。这稍微意味着您可以从类的另一个函数调用构造函数(例如,与singleton模式类似)。具有受保护构造函数的类不是抽象类。是的-受保护构造函数是一个不完美的类比库@dave_59,用于解释和提供这些论文的链接。@dave_59我要小心地说,构造函数是受保护的,正因为如此,你不能直接构造它。这稍微意味着您可以从类的另一个函数调用构造函数(例如,与singleton模式类似)。具有受保护构造函数的类不是抽象类。是的-受保护构造函数是一个不完美的类比