本文目录一览

1,C浅拷贝的作用是什么用在哪些场合

浅拷贝的作用是使得两个对象的成员的值一模一样。在对象间赋值。参数传递等场合使用。
呵呵,我认为呀:c++中浅拷贝就是将一个对象中的各个属性值以传值的方式传个一个新的未实例化的对象,而深拷贝就是将那些类中含有地址的成员以地址复制的方式创造一个新的对象,而其它普通成员仍是值传递,而且深拷贝在利用拷贝构造函数的时候必须自己定义

C浅拷贝的作用是什么用在哪些场合

2,什么是visual C中的深拷贝和浅拷贝

首先纠正一下,Visual C是编译环境lz想问的是C++的深复制和浅复制问题吧简单的说,就是在oop中会涉及到对象的成员中会有指针如果在复制对象时,只是简单的值复制,则两个对象共用一段内存区域这是比较危险的。如果一个对象析构函数回收了这段内存,另外一个对象就坐等悲剧了所以需要深复制!!就是把内存区域也复制一份副本这样说比较简单啦
这个很好理解。一般来说,深拷贝就是复制了那个对象。浅拷贝就是复制那个对象的指针。
呵呵,我认为呀: c++中浅拷贝就是将一个对象中的各个属性值以传值的方式传个一个新的未实例化的对象,而深拷贝就是将那些类中含有地址的成员以地址复制的方式创造一个新的对象,而其它普通成员仍是值传递,而且深拷贝在利用拷贝构造函数的时候必须自己定义

什么是visual C中的深拷贝和浅拷贝

3,java中什么是深拷贝什么是浅拷贝

简单点跟你说吧,容易理解。浅拷贝: 就是复制对象的值的时候,不管复制多少,所以的值都指向同一个对象。深拷贝: 在复制对象的值的时候,同时也重新创建了一个对象,每个值都指向一个不同的对象。如果你学习了c语言的指针,会理解的更深刻
浅拷贝 指的是你的类本身被拷贝,而没有拷贝类本身属性中的类深拷贝 指的是包含类本身和属性类在内的所有类的拷贝。简单点说:就是浅拷贝的两个对象中的属性还会指向同一个类,而深拷贝则全部单独了。也就是说深拷贝把关联关系也拷贝了。具体例子你可以参看我的blog,里面篇文章介绍:)
基础数据类型和String---Shallow Clone,复杂数据类型---Deep Clone
⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。

java中什么是深拷贝什么是浅拷贝

4,JAVA 中的浅拷贝是什么效果

首先必须知道Java拷贝的用途:Java克隆是为了得到一个对象,这个对象与克隆前的对象完全一样,唯一不同就是它们所处的内存地址不相同。对于java中的一切对象(除了基本的数据结构int、float、string等之外)在进行赋值,方法传递的时候,都是一个内存地址的同一个对象! 所谓浅拷贝一般就是就是直接调用对象的clone()方法,这样的拷贝,对于这个对象中的基本数据类型(int、string、float等)的属性,是可以得到完全的拷贝,但是对于这个对象里面的非基本数据类型(对象、集合等)的某些属性,实际上并没有进行克隆,而只是进行一个赋值操作而已,也就是说克隆出来的对象与原对象有一部分内容的内存地址是相同的,这在某些情况下会造成出错! 由此提出了深拷贝的概念,即覆写clone()方法,遍历对象中的每一个属性,采取合适的方式进行克隆即可。例如对于对象中的集合,可以遍历集合,然后构造一个新的集合,重新存储一遍... 更过关于Java克隆的问题详见Blog。
简单点跟你说吧,容易理解。浅拷贝: 就是复制对象的值的时候,不管复制多少,所以的值都指向同一个对象。深拷贝: 在复制对象的值的时候,同时也重新创建了一个对象,每个值都指向一个不同的对象。如果你学习了c语言的指针,会理解的更深刻

5,什么是浅拷贝和深拷贝

浅拷贝MyClass a,b;a=b;为了封装性和解耦,同类型的两个对象之间进行赋值操作时,所有成员变量被复制,包括私有成员、指针变量。 类的成员函数在传递或返回对象时都会进行对象复制产生临时对象,比如函数调用时实参变为形参,以及函数返回对象。考虑到性能和用户要求不同,编译器不复制对象内部动态创建的内存块,比如用new和malloc申请的内存,一般为数组或读取的文件数据流。 如果类中只有int、double、char、bool这类基本类型的变量,由于基本变量的所占空间是已知的,所以在编译时编译器就可确定所需内存大小而进行分配(静态分配内存),对象a和对象b他们的变量存在于各自的内存块中(对象内存空间),浅拷贝后a的所有变量都被拷贝,如果a中的变量值被修改不会影响b内的变量值。 但假如这个类是个含有一个指针变量p,其中b对象在运行时分配了块内存(比如动态创建了数组,或读取了文件数据流,即动态分配内存),p指向该内存,浅拷贝后,a的p被赋值,因此同样指向该内存块,也就是说a的指针p指向了b的指针p指向的内存。这就存在一个问题,两个对象的指针都指向一块内存,如果通过a的指针p修改数据,显然就会使得b内的数据也受到影响,这不符合解耦原则而破坏了对象的封装性。 深拷贝由于上述原因,C++提供了拷贝构造函数接口以及赋值操作符重载函数接口,以便开发者处理动态分配的内存的复制工作,这类复制工作就叫深拷贝。class MyClasspublic: MyClass(const MyClass & obj);//拷贝构造函数 MyClass & operator =(const MyClass & obj);//赋值操作符重载函数}浅拷贝是系统自动调用的默认赋值操作符重载函数实现,而深拷贝需要开发者实现。

6,C中什么是深拷贝什么是浅拷贝

拷贝构造函数是为了类像内置类型那样能够进行复制,比如int a=0;int b = a;默认复制构造函数一本就是浅拷贝,深拷贝和浅拷贝时针对类数据成员有指针成员或引用成员,比如一个类中有一个指针成员int * p,浅拷贝是指在复制指针时,直接复制指针,即两个类的指针p都指向一个内存单元,而深拷贝是指将一个类的指针所指向的内容复制给另一个类,这样,两个类的指针成员指向两个不同的内存单元。请参考C++ primer希望能解决您的问题。
1、浅拷贝:默认的拷贝就是浅拷贝。 仅仅多了个指针指向原来的空间。2、深拷贝:自己写的拷贝,自己申请了动态内存空间,用了new 或 malloc 。不但多了指针,而且多了空间。3、用深拷贝的话,最好用自己写的析构,记得在里面释放内存,也可以用默认析构。4.用浅拷贝(即默认隐藏的拷贝),最好用默认析构,若用自己写的析构里面 ,记得不要释放内存,不然会造成重复释放内存而报错。
浅拷贝就比如像引用类型,而深拷贝就比如值类型。浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。
呵呵,我认为呀:c++中浅拷贝就是将一个对象中的各个属性值以传值的方式传个一个新的未实例化的对象,而深拷贝就是将那些类中含有地址的成员以地址复制的方式创造一个新的对象,而其它普通成员仍是值传递,而且深拷贝在利用拷贝构造函数的时候必须自己定义
深拷贝就是直接拷贝内容,拷贝完后,两个对象相互独立,参考memcpy;浅拷贝就是共享同一内容,拷贝完后,两个对象相互影响,参考string;

文章TAG:浅拷贝  拷贝  作用  是什么  浅拷贝  
下一篇