SV中的浅拷贝和深拷贝
1.浅拷贝
浅拷贝: 只拷贝对象中的数据变量,而对于对象中的数据操作(一般为任务和函数)和其中定义的其他类的句柄,采用类似“引用”的方式,浅拷贝前后共用同一内存空间。
可以使用new
操作符进行复制。如果一个类包含指向另一个类的句柄,只有最高级的对象被new操作符复制,下一层的对象都不会被复制
class Transaction;bit [31:0] addr,crc,data[8];statistics stats;static int count=0;int id;function new;stats=new();id=count++;endfunction
endclass Transaction src,dst;initial beginsrc=new();src.stats.startT=42;dst=new src;dst.stats.startT=96;display(src.stats.startT);
可以看到,具有相同的id地址,采用类似“引用”的方式,浅拷贝前后共用同一内存空间。
对p2中的a1句柄做操作后将会影响p1中的a1
2.深拷贝
深拷贝: 对象拷贝,对对象中的所有成员变量(包括数据变量、数据操作和其他句柄)统一分配新的内存空间。
可将拷贝对象中所包含的对象拷贝过来,自定义copy函数
,copy
调用了new函数
。
class Transaction;bit [31:0] addr,crc,data[8];statistics stats;static int count=0;int id;function new;stats=new();id=count++;endfunctionfunction Transaction copy;copy=new();copy.addr=addr;copy.data=data;copy.crc=crc;copy.stats=stats.copy();id=count++;endfunction
endclass Transaction src,dst;initial beginsrc=new();src.stats.startT=42;dst=src.copy();dst.stats.startT=96;$display(src.stats.startT);end
对p2中的a2句柄做操作后将会不会影响p1中的a1
参考:
https://blog.csdn.net/weixin_42162448/article/details/121972033
systemverilog验证测试平台编写指南
SV中的浅拷贝和深拷贝相关推荐
- js 浅拷贝直接赋值_JS中实现浅拷贝和深拷贝的代码详解
(一)JS中基本类型和引用类型 JavaScript的变量中包含两种类型的值:基本类型值 和 引用类型值,在内存中的表现形式在于:前者是存储在栈中的一些简单的数据段,后者则是保存在堆内存中的一个对象. ...
- 【转】JAVA中的浅拷贝和深拷贝
原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep co ...
- Python中的浅拷贝和深拷贝(一看就懂!!!)
浅拷贝和深拷贝一直傻傻的分不清,甚至有时候会理解反.今天就简单总结一下python中的浅拷贝和深拷贝. 总结 最直观的理解就是: 1.深拷贝,拷贝的程度深,自己新开辟了一块内存,将被拷贝内容全部拷贝过 ...
- Java中的浅拷贝与深拷贝
一.引用拷贝与对象拷贝 class Person implements Cloneable{private String name;private int age;...省略get和set方法 pro ...
- 43 JavaScript中的浅拷贝与深拷贝
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.浅拷贝与深拷贝 浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用. 深拷贝拷贝多层,每 ...
- 说说JS中的浅拷贝与深拷贝
outline: 为什么要说JS中深拷贝与浅拷贝 JS对类型的分类 immutable与mutable 简单类型检测 浅拷贝VS深拷贝 为什么要说JS中深拷贝与浅拷贝 近来在研读underscore的 ...
- C#中的浅拷贝和深拷贝
C#中有两种类型变量,一种是值类型变量,一种是引用类型变量.对于前者,copy是属于全盘复制:而对于后者,一般的copy只是浅copy,相当于只传递一个引用指针一样.因此对于后者进行真正copy的时候 ...
- python浅拷贝_Python中的浅拷贝和深拷贝
本文翻译自copy in Python (Deep Copy and Shallow Copy),讲述了在Python语言中浅拷贝与深拷贝的不同用法.全文系作者原创,仅供学习参考使用,转载授权请私信联 ...
- clone是深拷贝还是浅拷贝_Python中的浅拷贝和深拷贝
本文翻译自copy in Python (Deep Copy and Shallow Copy),讲述了在Python语言中浅拷贝与深拷贝的不同用法.全文系作者原创,仅供学习参考使用,转载授权请私信联 ...
- 浅拷贝 python_python中的浅拷贝和深拷贝
http://python.jobbole.com/82294/ Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介 ...
最新文章
- 微软10月起将向安全厂商提前告知安全补丁内容
- 指针作为函数的返回值
- 人工智能是利用电子计算机模拟人类智力,第一章 计算机系统.ppt
- 3.Programming in TensorFlow and Keras
- [深度学习-实践]GAN入门例子-利用Tensorflow Keras与数据集CIFAR10生成新图片
- solr java api_Solr7.4.0的API(Solrj)操作
- Eclipse用法和技巧九:自动添加try/catch块2
- web文件上传(二)--使用form还是ajax
- PAT (Basic Level) Practice1001 害死人不偿命的(3n+1)猜想
- 面向对象七大设计原则(转)
- 【手势识别】基于matlab GUI SIFT+SVM算法手势识别【含Matlab源码 1789期】
- ROS 设置环境变量
- 微信小程序上线,后台接口失效问题
- 人工智能 2 级就来越塔来杀我,论文已被NeurIPS收录!
- 怎么样去学习平面设计,学ps就是平面设计了吗?
- iOS10访问通讯录、相册等隐私权限设置
- c语言用指针升序降序,C语言函数序——升序降序.doc
- linux 移除、加载SATA盘
- 1 实验9_7_设计函数int getVowel(char str[],char vowel[]); (100分)
- GlusterFS——分布式复制卷