c++深复制与浅复制区别代码示范vs2015-txwtech
c++深复制与浅复制区别代码示范vs2015-txwtech
c++深复制与浅复制区别代码示范
区别:
深复制:
CDemo B = A;
B.str[0] = 'K';//B对象里面的元素修改后,A里面不会发生改变。
//--------深复制-----------复制构造函数
CDemo(CDemo &obj1)
{
this->a = obj1.a;
this->str = new char[1024];//用new关键字动态分配内存,就是深复制。
if (str!=0)
{
strcpy(this->str,obj1.str);
}
}
浅复制:
因为调用是隐藏的,看不见的,默认的,自动生成的,复制构造函数。
CDemo B = A;
B.str[0] = 'K';//B对象里面的元素修改后,A里面一起发生改变。
//---------浅复制-----------复制构造函数
CDemo(CDemo& obj)
{
this->a = obj.a;
this->str = obj.str;//这句是浅复制
}
//在测试时,分别屏蔽浅复制与深复制,查看结果。txwtech
//自己写了复制构造函数,必须写析构函数释放指针
————————————————
版权声明:本文为CSDN博主「txwtech」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/txwtech/article/details/103308170
#define _CRT_SECURE_NO_WARNINGS
#include <iostream> using namespace std;
class CDemo
{
public:
CDemo(int pa, char *cstr)
{
this->a = pa;
this->str = new char[];//传递指针,必须使用new动态开辟一块空间
strcpy(this->str,cstr); }
//如下是隐藏的,看不见的,默认的,自动生成的,复制构造函数,这个是 //---------浅复制-----------
//CDemo(CDemo& obj)
//{
// this->a = obj.a;
// this->str = obj.str;//这句是浅复制
//
//}
//在测试时,分别屏蔽浅复制与深复制,查看结果。txwtech //写成深复制构造函数,自己写出来--- //--------深复制-----------
CDemo(CDemo &obj1)
{
this->a = obj1.a;
this->str = new char[];//用new关键字动态分配内存,就是深复制。
if (str!=)
{
strcpy(this->str,obj1.str);
}
}
//自己写了复制构造函数,必须写析构函数释放指针
~CDemo()
{
delete str;
} public:
int a;
char *str; //private: }; int main()
{
CDemo A(,"hello1");
cout << A.a << "," << A.str << endl;
CDemo B = A;
B.str[] = 'K';//
//如果复制B.str="abcde";一个字符串,A的值不会变。
//cout << "修改B的一个字符后:B.str[0] = 'K';发现A的值一起变化了" << endl;
cout << "A.str is: " << A.str << endl; cout << "B.str is : " << B.str << endl; getchar(); return ;
} /*vs2015 严重性 代码 说明 项目 文件 行 禁止显示状态
//错误 C4996 'strcpy': This function or variable may be unsafe.Consider using strcpy_s instead.To //disable deprecation, use _CRT_SECURE_NO_WARNINGS.See online help for details.cc12a_demo d : \users//\tt2018\documents\visual studio 2015\projects\cc12a_demo\cc12a_demo\cc12a_demo.cpp 11
1.放在#include语句之前,且即放在第一行,前面不能有注释,即真正的第一行;定义下面的宏: #define _CRT_SECURE_NO_WARNINGS或 #define _CRT_SECURE_NO_DEPRECATE
https://blog.csdn.net/Young__Fan/article/details/79829265 //https://blog.csdn.net/txwtech/article/details/89765796 */
c++深复制与浅复制区别代码示范vs2015-txwtech的更多相关文章
- C++学习基础七——深复制与浅复制
一.深复制与浅复制基本知识 深复制和浅复制,又称为深拷贝和浅拷贝. 深复制和浅复制的区别如下图1所示: 图1 图1表示的是,定义一个类CDemo,包含int a和char *str两个成员变量, 当深 ...
- 深复制与浅复制&&strong,copy修饰符总结
又是一个老生常谈的话题,可是貌似这个问题,好多ios开发工程师并不能理解透彻,所以简单记录分析一下深复制与浅复制的原理以及strong,copy修饰符的原理和使用. 一.深复制与浅复制 ...
- iOS 集合的深复制与浅复制
概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 一图以蔽之 再简单些说:浅复制就是指针拷贝:深复制 ...
- Java中对象的深复制和浅复制详解
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
- Java中的深复制与浅复制
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不 复制它所引用的对象. ...
- C#深复制与浅复制
C#深复制与浅复制 C#中对于数据的复制机制虽然简单但是容易让人误解.C#数据类型大体分为值类型(value type)与引用类型(reference type).对于值类型数据,复制的时候直接将数据 ...
- clone()方法、深复制和浅复制
clone方法 Java中没有明确提供指针的概念和用法,而实质上没个new语句返回的都是一个指针的引用,只不过在大部分情况下开发人员不需要关心如何去操作这个指针而已. 在实际编程中,经常会遇到从某个已 ...
- 实现 $.extend 的深复制和浅复制
$.extend 是jquery常用的一个方法,该方法通过传第一个布尔型参数可以指定为深复制还是浅复制,如何使用不在本文讨论. 先来理解下什么是深复制: var ob1 = {'name' : 'Ja ...
- Java中的clone()----深复制,浅复制
这篇文章主要介绍了Java中对象的深复制(深克隆)和浅复制(浅克隆) ,需要的朋友可以参考下 1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他 ...
随机推荐
- MIT6.828准备:MacOS下搭建xv6和risc-v环境
本文介绍在MacOS下搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链.qemu和xv6,对于Linux系统同样可以参考. 介绍 只有了解底层原理才能写好上 ...
- [Android应用开发] 02.界面展现和文件权限
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 2020年,哪一款远程桌面(VPS管理器)最值得你期待
上周,我得知到,iis7远程桌面版本又更新的消息.进入该网站一看,果然如此. 通道:IIS7远程桌面V2.0.1 版本 最新程序截图如下,和老版本相比,果然又高大上了很多:
- 【Storm】与Hadoop的区别
1)Storm用于实时计算,Hadoop用于离线计算. 2)Storm处理的数据保存在内存中,源源不断:Hadoop处理的数据保存在文件系统中,一批一批处 理. 3)Storm的数据通过网络传输进来: ...
- Java 第十一届 蓝桥杯 省模拟赛 梅花桩
小明每天都要练功,练功中的重要一项是梅花桩. 小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1. 小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上.小 ...
- (Java实现) 图的m着色问题
图的m着色问题 [问题描述] 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的m着色问 ...
- Java实现 蓝桥杯VIP 算法训练 方格取数
问题描述 设有NN的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0. 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点 ...
- Java实现 LeetCode 242 有效的字母异位词
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...
- Java实现 蓝桥杯VIP 算法提高 统计单词数
算法提高 统计单词数 时间限制:1.0s 内存限制:512.0MB 问题描述 统计输入英文文章段落中不同单词(单词有大小写之分, 但统计时忽略大小写)各自出现的次数. 输入段落中所含单词的总数不超过1 ...
- harbor私有仓库安装
准备环境 centos7.4 docker-ce 19.03.8 docker-compose version 1.18.0 harbor 版本: 1.7.5 一.安装dokcer # 安装依赖包 ...