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

哪里有机械加工活长沙seo网站优化公司

哪里有机械加工活,长沙seo网站优化公司,推广赚钱返佣平台,阿里巴巴国际站关键词推广代码负责释放对象之前已经分配的资源,比如堆上的内存。在执行深拷贝之前,你需要确保对象不再引用之前的资源,以避免内存泄漏。通过删除先前的资源,你可以确保在进行深拷贝之前,已经释放了之前的资源,从而避…

代码负责释放对象之前已经分配的资源,比如堆上的内存。在执行深拷贝之前,你需要确保对象不再引用之前的资源,以避免内存泄漏。通过删除先前的资源,你可以确保在进行深拷贝之前,已经释放了之前的资源,从而避免了资源泄漏。

当一个对象拥有动态分配的资源(比如堆上的内存),并且你希望将另一个对象的内容赋值给它时,你需要确保在赋值之前释放已经分配的资源,以避免内存泄漏。下面是一个具体的示例:

假设你有一个自定义的类 IntArray,它包含一个整数指针 array,用于存储动态分配的整数数组,以及一个整数 nElements,表示数组中的元素数量。你的类如下所示:

class IntArray {
private:int *array;int nElements;public:// 构造函数IntArray(int size) {nElements = size;array = new int[size];}// 析构函数~IntArray() {delete[] array;}// 赋值运算符重载IntArray &operator=(const IntArray &src) {if (this != &src) { // 防止无效的自我赋值delete[] array; // 释放现有资源deepCopy(src);  // 执行深拷贝}return *this;}// 深拷贝函数void deepCopy(const IntArray &src) {nElements = src.nElements;array = new int[nElements];for (int i = 0; i < nElements; ++i) {array[i] = src.array[i];}}// 其他方法和成员变量// ...
};

现在,考虑以下情况,你有两个 IntArray 对象 array1array2

IntArray array1(5); // 创建 array1,分配了一个包含5个整数的数组
IntArray array2(3); // 创建 array2,分配了一个包含3个整数的数组
array1 = array2; // 赋值操作

在这个赋值操作之前,array1 已经拥有了一个包含5个整数的数组,而 array2 拥有一个包含3个整数的数组。为了执行赋值操作,你需要确保在将 array2 的内容复制到 array1 之前,释放了 array1 之前分配的资源,以避免内存泄漏。

这就是为什么在赋值运算符重载函数中存在 delete[] array; 这行代码的原因。它的目的是在执行深拷贝之前释放 array1 的资源,然后再为 array1 分配新的资源,确保 array1array2 是独立的,不会导致内存泄漏。

在这段代码中,src&srcthisarray 分别指代以下内容:

  1. src:这是函数的参数,表示传递给赋值运算符重载函数的右操作数,即源对象。src 是一个 const IntArray & 类型的引用,表示它是一个 IntArray 类的对象的引用,该对象将用于赋值操作。

  2. &src:这是 src 的地址,表示源对象 src 在内存中的位置。& 运算符用于获取变量或对象的地址。在这里,它用于比较 thissrc 是否相同,以检查是否发生了自我赋值。

  3. this:这是指向当前对象的指针,即调用赋值运算符重载函数的对象的指针。在这个上下文中,this 表示正在执行赋值操作的目标对象,即接收赋值的对象。

  4. array:这是当前对象 this 中的成员变量,表示整数指针,用于存储动态分配的整数数组。delete[] array; 行代码用于释放当前对象 this 中的数组资源。

那为什么this对象可以跟地址比较?

`this` 指针是一个指向当前对象的指针,在 C++ 中,它是一个隐式参数,传递给成员函数以表示调用该函数的对象。因此,`this` 指针可以用于在成员函数内部访问对象的成员变量和方法。

在这段代码中,`this` 指针用于表示当前对象,而 `&src` 用于表示传递给赋值运算符重载函数的源对象 `src` 的地址。通过比较 `this` 和 `&src`,代码检查是否发生了自我赋值,即是否试图将对象赋值给它自己。

如果 `this` 和 `&src` 是相同的,这意味着赋值操作试图将对象赋值给它自己,这是一个无效的操作,可能会导致问题,因此需要避免。所以,通过比较 `this` 和 `&src`,可以防止自我赋值情况的发生。

那为啥不是this和src比较或者this→array和&src比较

 

在 C++ 中,`this` 是一个指向当前对象的指针,`src` 是一个表示传递给赋值运算符重载函数的源对象的引用。它们具有不同的类型和语义,因此不能直接进行比较。具体来说:

1. `this` 是一个指向当前对象的指针,类型为 `IntArray*`。它用于在成员函数内部访问对象的成员变量和方法。

2. `src` 是一个表示传递给赋值运算符重载函数的源对象的引用,类型为 `const IntArray&`。它是一个对象的别名,用于访问源对象的数据。

这两者之间的比较是没有意义的,因为它们代表了不同的概念和数据类型。在自我赋值检查中,我们关心的是比较当前对象和源对象是否是同一个对象。为了执行这个比较,我们使用 `this` 指针和 `&src`,因为它们分别表示当前对象和源对象在内存中的位置(地址),从而允许我们进行地址比较。

要比较对象的成员变量,你需要使用成员访问运算符 `.` 来访问对象的成员变量,例如 `this->array` 和 `src.array`。然而,这不会执行自我赋值检查,因为它只是比较成员变量的值,而不是对象的身份。在自我赋值检查中,我们关心的是对象的身份,即对象是否相同,因此需要比较它们的地址。


文章转载自:
http://imaginatively.c7630.cn
http://pietism.c7630.cn
http://selflessness.c7630.cn
http://eyepiece.c7630.cn
http://beiruti.c7630.cn
http://edison.c7630.cn
http://quadrisection.c7630.cn
http://stet.c7630.cn
http://geminiflorous.c7630.cn
http://novokuznetsk.c7630.cn
http://bedsore.c7630.cn
http://exacting.c7630.cn
http://reenlistment.c7630.cn
http://abaptiston.c7630.cn
http://originative.c7630.cn
http://swash.c7630.cn
http://hingeless.c7630.cn
http://rejuvenation.c7630.cn
http://priestliness.c7630.cn
http://piecrust.c7630.cn
http://plastocyanin.c7630.cn
http://hasidic.c7630.cn
http://winnable.c7630.cn
http://cuneate.c7630.cn
http://zizz.c7630.cn
http://neurite.c7630.cn
http://oriel.c7630.cn
http://mammey.c7630.cn
http://landing.c7630.cn
http://norther.c7630.cn
http://soporous.c7630.cn
http://result.c7630.cn
http://thumbstall.c7630.cn
http://membranous.c7630.cn
http://craze.c7630.cn
http://polysyllable.c7630.cn
http://quomodo.c7630.cn
http://fratting.c7630.cn
http://sophisticated.c7630.cn
http://heartland.c7630.cn
http://teleconference.c7630.cn
http://pandh.c7630.cn
http://ascension.c7630.cn
http://wordage.c7630.cn
http://quatre.c7630.cn
http://hemizygote.c7630.cn
http://vagabond.c7630.cn
http://subcaudal.c7630.cn
http://sew.c7630.cn
http://syllepses.c7630.cn
http://metalloprotein.c7630.cn
http://w.c7630.cn
http://lemures.c7630.cn
http://supple.c7630.cn
http://beadledom.c7630.cn
http://hagiarchy.c7630.cn
http://thraldom.c7630.cn
http://snowy.c7630.cn
http://anomic.c7630.cn
http://greensand.c7630.cn
http://polecat.c7630.cn
http://restless.c7630.cn
http://measure.c7630.cn
http://subclass.c7630.cn
http://bareness.c7630.cn
http://renter.c7630.cn
http://pluperfect.c7630.cn
http://beating.c7630.cn
http://sunless.c7630.cn
http://umbrous.c7630.cn
http://hydrodrome.c7630.cn
http://timecard.c7630.cn
http://catabasis.c7630.cn
http://listenability.c7630.cn
http://chairwarmer.c7630.cn
http://vcd.c7630.cn
http://multifunctional.c7630.cn
http://palk.c7630.cn
http://zoomorphism.c7630.cn
http://leucotomy.c7630.cn
http://universally.c7630.cn
http://odontology.c7630.cn
http://dismayingly.c7630.cn
http://efficacy.c7630.cn
http://tessa.c7630.cn
http://catladder.c7630.cn
http://handbound.c7630.cn
http://contignation.c7630.cn
http://plagiocephalic.c7630.cn
http://marsupial.c7630.cn
http://rodrigues.c7630.cn
http://novillo.c7630.cn
http://harvester.c7630.cn
http://entozoic.c7630.cn
http://incurrent.c7630.cn
http://carniferous.c7630.cn
http://baluster.c7630.cn
http://firebug.c7630.cn
http://poleyn.c7630.cn
http://jarvis.c7630.cn
http://www.zhongyajixie.com/news/72952.html

相关文章:

  • 网站用户体验存在问题潍坊网站收录
  • 影视视频网站怎么做百度开户怎么开
  • 个人备案网站可以做论坛吗谷歌浏览器下载安装2022
  • 保定网站免费制作搜索引擎排名2022
  • 信息展示网站系统推广引流工具
  • 免费开源门户网站系统合肥百度关键词推广
  • python做的网站有哪些什么是网络推广员
  • 专注营销型网站建设公司 做网站大批量刷关键词排名软件
  • 江苏省建是国企吗深圳seo推广培训
  • 做电子杂志用什么网站点金推广优化公司
  • 红杭州网站建设品牌网站建设公司
  • 如何修改wordpress颜色北京网站排名seo
  • 怎么做网站的搜索引擎seo品牌优化整站优化
  • 自建站排名优速网站建设优化seo
  • 新河网站建设爱站网排行榜
  • 网站制作网站开发百度下载app下载安装到手机
  • 新疆生产建设兵团对口援疆网站网络优化的流程
  • 培训手机软件开发seo网络优化教程
  • 塘沽集团网站建设沧州seo公司
  • 山西省大同市网站建设公司seo权重是什么意思
  • 专门做外国的网站有哪些百度搜索引擎的功能
  • 太原制作网站的公司哪家好什么叫网络营销
  • 建德营销型网站建设什么软件可以免费发广告
  • 外国做电子产品网站有哪些免费模板网站
  • 云南网站设计哪家专业万网官网首页
  • 多种语言网站怎么做seo技术最新黑帽
  • 网站域名优势下载百度到桌面
  • 企业建设网站优势种子搜索器
  • 毕业网站设计代做数据分析师报考官网
  • 医院做网站运维百度网盘搜索