当前位置: 首页 > news >正文

成都网站建设高端app营销十大成功案例

成都网站建设高端,app营销十大成功案例,wordpress技巧,2016年做水果行业专业网站浅拷贝 浅拷贝就是单纯拷贝指向该对象的内存,所以在进行多次浅拷贝后只是相当于多了几个指向同一个对象的指针,而深拷贝相当于完全复制了一个对象副本。浅拷贝指的是复制对象的所有成员变量的值,不管这些值是指针、基本数据类型还是其他对象…

浅拷贝

浅拷贝就是单纯拷贝指向该对象的内存,所以在进行多次浅拷贝后只是相当于多了几个指向同一个对象的指针,而深拷贝相当于完全复制了一个对象副本。浅拷贝指的是复制对象的所有成员变量的值,不管这些值是指针、基本数据类型还是其他对象,但当涉及到指针时,浅拷贝只会复制指针的值(即地址),而不是它所指向的数据,这可能会导致多个对象共享相同的数据。这与深拷贝相反,深拷贝会创建原对象指针所指向的数据的一个新副本。

默认的拷贝构造函数和赋值运算符实现的就是浅拷贝。因此,如果你不为类提供自定义的拷贝构造函数和赋值运算符,编译器会为你提供默认的实现,这就是浅拷贝。

以下是一个简单的浅拷贝的例子:

#include <iostream>class ShallowCopy {
public:int* data;ShallowCopy(int d) {data = new int(d);}// 使用编译器生成的默认拷贝构造函数// ShallowCopy(const ShallowCopy& src) = default;// 使用编译器生成的默认赋值运算符// ShallowCopy& operator=(const ShallowCopy& src) = default;~ShallowCopy() {delete data;}
};int main() {ShallowCopy obj1(10);ShallowCopy obj2 = obj1; // 这里进行了浅拷贝std::cout << *obj1.data << " " << *obj2.data << std::endl; // 输出: 10 10*obj1.data = 20;std::cout << *obj1.data << " " << *obj2.data << std::endl; // 输出: 20 20return 0;
}

在上面的例子中,当obj2是通过obj1的拷贝构造函数创建的时,进行的是浅拷贝,所以obj1.dataobj2.data都指向相同的地址。因此,改变其中一个也会影响到另一个。

注意:浅拷贝通常是不安全的,特别是当类中有动态分配的资源时。在上面的例子中,当obj1obj2都析构时,它们都会尝试释放同一块内存,这会导致未定义的行为。为了避免这种情况,你通常需要实现深拷贝或者使用智能指针来管理资源。

深拷贝

在C++中,深拷贝意味着当对象被拷贝时,不仅复制对象的所有成员变量值,而且还复制其指针成员变量所指向的数据。这与浅拷贝相反,浅拷贝只会复制指针的值而不是其所指向的数据,可能导致多个对象共享相同的数据。

为了实现深拷贝,你通常需要为类提供自定义的拷贝构造函数和赋值运算符,并在其中对指针成员进行深拷贝。

下面是一个深拷贝的示例:

#include <iostream>class DeepCopy {
private:int* data;public:DeepCopy(int d) {data = new int(d);}// 自定义拷贝构造函数,实现深拷贝DeepCopy(const DeepCopy& src) {data = new int(*(src.data));}// 自定义赋值运算符,实现深拷贝DeepCopy& operator=(const DeepCopy& src) {if (this == &src) {return *this;  // 处理自赋值的情况}delete data; // 删除当前对象的资源// 为当前对象分配新的资源,并拷贝内容data = new int(*(src.data));return *this;}~DeepCopy() {delete data;}// Getter for demonstration purposesint getData() const {return *data;}
};int main() {DeepCopy obj1(10);DeepCopy obj2 = obj1; // 使用自定义拷贝构造函数,实现深拷贝std::cout << obj1.getData() << " " << obj2.getData() << std::endl; // 输出: 10 10// 修改obj2的内容DeepCopy obj3(30);obj2 = obj3;std::cout << obj1.getData() << " " << obj2.getData() << " " << obj3.getData() << std::endl; // 输出: 10 30 30return 0;
}

在上面的例子中,深拷贝确保了当一个对象被拷贝或分配时,每个对象都有其自己独立的资源副本,这避免了多个对象共享相同的资源。

http://www.yidumall.com/news/48316.html

相关文章:

  • 做数据权威的网站关键词优化排名费用
  • 自己做网站的网址智慧软文网站
  • 南宁手机建站公司免费b站推广入口
  • 政府门户网站建设需求长春seo排名优化
  • 网站建设不完整seo百度百科
  • 海外站推广seo北京
  • 重庆媒体网站建设单价成都纯手工seo
  • 网站域名301如何做到精准客户推广
  • 威海北京网站建设如何增加网站的外链
  • 口碑好网站制作公司哪家好2021最火营销方案
  • 投资集团网站建设方案百度推广怎么使用教程
  • 白城市住房建设局网站广州seo成功案例
  • wordpress首页设置东莞网站seo推广
  • 想做个网站怎么做优化seo搜索
  • 高新区网站建设公司培训机构咨询
  • 聊城集团网站建设加盟app推广代理加盟
  • 专做定制网站建设海口网站关键词优化
  • 做网站下载什么软件电商培训机构有哪些哪家比较好
  • wordpress 建站自动秒收录网
  • 国外做的好点电商网站今日新闻快报
  • smartschool 学校网站管理系统一般网站推广要多少钱
  • 中智项目外包服务有限公司seo关键词排名工具
  • 广西桂平建设局网站好搜搜索引擎
  • java网站开发论文百度一下百度主页官网
  • 网站里添加斗鱼直播的视频怎么做成都专门做网络推广的公司
  • 法人查询上海seo网站优化软件
  • 党风廉政建设漫画网站自媒体视频剪辑培训班
  • 门户网站建设情况四川疫情最新消息
  • 陕西网站建设哪家好写文的免费软件
  • wordpress 目录菜单黑帽seo之搜索引擎