SV(3)-面向对象编程基础(类和对象)

本文详细介绍了C++中类的创建、对象与句柄的概念,包括如何创建Transaction类,new()和new[]的区别,以及类的静态变量和全局变量的运用。通过实例演示了对象的分配、释放和操作,以及如何访问静态变量。
摘要由CSDN通过智能技术生成

1.如何创建一个类

class Transaction;
	bit [31:0] addr,crc,data[8];
	
	function void display;
		$display("Transaction:%h",addr);
	endfunction:display
	
	function void calc_crc;
		crc = addr^data.xor;
	endfunction:calc_crc
endclass:Transaction

2.如何理解类,句柄和对象三者的关系

//类是一个包含变量的基本构件块,如创建一个简单类:
class:Transaction;
	...
endclass:Transaction

//句柄是指向对象的指针,如声明一个句柄:
Transaction tr;

//对象是类的一个实际例子,如创建一个对象:
tr = new();

3.如何调用new()函数

class:Transaction;
	...
endclass:Transaction

class Driver;
	Transaction tr;
	function new();
		tr = new();//调用Transaction的new函数
	endfunction
endclass:Driver

4.new()和new[]的区别

- new()函数的作用是创建对象

- new[]操作是建立了一个含有多元素的数组

5.一个句柄创建多个对象

Transaction t1,t2; //声明两个句柄
t1 = new();        //为第一个Transaction对象分配地址
t2 = t1;		   //t1和t2都指向该对象
t2 = new();		   //为第二个Transaction对象分配地址

6.如何解除对象的分配

Transaction t;
	t = new();
	t = null; //解除分配

7.如何使用对象

Transaction t;
t = new();
t.addr = 32'h42;//设置函数的值
t.display();    //调用函数的一个子程序

8.静态变量和全局变量的区别

静态变量:该变量将被这个类的所有实例所共享,并且的它的范围仅限于这个类
全局变量:整个测试平台都可以访问整个变量

9.如何创建一个简单的静态变量类

class Transaction;
	static int count = 0;  //已创建的对象的目的
	int id;                //实例的唯一id
	function new();
		id = count ++ ;
	endfunction
endclass

Transaction t1,t2;
initial begin 
	t1 = new();
	t2 = new();
	$display("Second id = %d",t2.id,t2.count);
end

10.如何访问静态变量

class Transaction
	static int count = 0;
	...
endclass

initial begin
	run_test();
	$diaplay("%d transaction were created",Transaction::count);//引用静态句柄
end
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在C++中,类的封装、继承和多态是面向对象编程的重要概念。下面我将分别解释这三个概念。 1. 封装(Encapsulation): 封装是指将数据和对数据的操作封装在一起,形成一个类。类通过公有(public)和私有(private)成员来控制对数据的访问。公有成员可以被类的外部访问,而私有成员只能在类内部访问。通过封装,我们可以隐藏数据的具体实现细节,提供对外的接口,实现数据的安全性和灵活性。 2. 继承(Inheritance): 继承是指一个类从另一个类获得成员和方法的能力。通过继承,我们可以构建类的层次结构。子类(派生类)可以继承父类(基类)的成员和方法,同时也可以添加自己的成员和方法。继承可以提高代码的复用性,减少重复编写的工作。 3. 多态(Polymorphism): 多态是指同一操作可以在不同的对象上有不同的行为。在面向对象编程中,多态主要通过函数重写(函数覆盖)和函数重载来实现。函数重写是指在派生类中重写基类的虚函数,使得在调用同名函数时,根据对象的类型来调用相应的函数函数重载是指在同一个类中,可以有多个同名函数,但参数类型或参数个数不同。多态可以提高代码的灵活性和可扩展性。 这些概念是面向对象编程中的基础,对于理解和设计类的关系和行为非常重要。在实际的程序开发中,我们经常会使用封装、继承和多态来实现各种功能和实现代码的复用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马志高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值