iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中怎么实现对象复制
  • 515
分享到

C++中怎么实现对象复制

2023-06-17 16:06:25 515人浏览 安东尼
摘要

今天就跟大家聊聊有关c++中怎么实现对象复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++对象复制代码示例:class Table{  Name&

今天就跟大家聊聊有关c++中怎么实现对象复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

C++对象复制代码示例:

class Table{  Name * p;  size_t sz;  publish:  Table(size_t s = 15){p = new Name[ssz=s];}  ~Table(){delete[]p ;}  ......  }  void h()  {  Table t1;  Table t2 = t1;  Table t3;  t3 = t2;  }

在h()结束时,默认构造函数调用了2次,而析构函数被调用了3次,为何?

  • Table t1; 调用1次默认构造函数

Table t2 = t1;默认的对象的赋值操作,按成员赋值,其中关于指针p,仅仅是将t1.p赋值给t2.p,即t2.p = t1.p,并无内存分配。对象t1和t2的p指针均指向同一块内存。

Table t3; 调用1次默认构造函数

t3 = t2; 原t3.p指针被t2.p覆盖,此时t3.p同样指向对象t1和t2的p指针的同一块内存。注意:t3原分配给p的内存由于没有指针指向,无法利用,造成存储浪费。

h()结束,对象t1,t2,t3的析构函数调用,此时对t1,t2,t3的指针p所指的同一块存储进行了三次删除,非常危险,导致的结果是无发预料的,很可能灾难性的。

因此明确定义类的复制构造函数(拷贝构造函数)和赋值预算可避免这样的错误。

代码

Table::Table (const Table &t)  {  p = new Name[sz=t.sz];  for(int i=0;i<sz;i++) p[i]=t.p[i];  }  Table & Table::operator=(const Table &t)  {  if(this!=&t){  delete []p;  p = new Name[sz=t.sz];  for(int i=0;i<sz;i++) p[i]=t.p[i];  }  return *this;  }

看完上述内容,你们对C++中怎么实现对象复制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网其他教程频道,感谢大家的支持。

--结束END--

本文标题: C++中怎么实现对象复制

本文链接: https://www.lsjlt.com/news/290873.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中怎么实现对象复制
    今天就跟大家聊聊有关C++中怎么实现对象复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++对象复制代码示例:class Table{  Name&...
    99+
    2023-06-17
  • C#使用表达式树怎么实现对象复制
    本篇内容主要讲解“C#使用表达式树怎么实现对象复制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#使用表达式树怎么实现对象复制”吧!需求背景:对象复制性能优化;同时,在对象复制时,应跳过引用类...
    99+
    2023-06-22
  • 怎么在Javascript中复制对象
    怎么在Javascript中复制对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对...
    99+
    2023-06-14
  • C#中怎么实现对象初始化
    本篇文章给大家分享的是有关C#中怎么实现对象初始化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#对象初始化器 (Object Initializers) :.NET2.0框...
    99+
    2023-06-17
  • C#中对象状态模式怎么实现
    这篇文章主要介绍了C#中对象状态模式怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中对象状态模式怎么实现文章都会有所收获,下面我们一起来看看吧。定义枚举表示教程进度首先用一个枚举,表示教程进行的不同...
    99+
    2023-06-30
  • C#使用表达式树实现对象复制的示例代码
    需求背景:对象复制性能优化;同时,在对象复制时,应跳过引用类型的null值复制,值类型支持值类型向可空类型的复制 using Common; using System; class ...
    99+
    2022-11-12
  • C#中怎么实现复制构造函数
    C#中怎么实现复制构造函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#复制构造函数的一点认识:某些编程语言的类提供了复制构造函数,即从当前类实例构造一个新的类实例。在...
    99+
    2023-06-18
  • nodeJS中怎么实现一个二进制buffer对象
    nodeJS中怎么实现一个二进制buffer对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 概述由于应用场景不同...
    99+
    2022-10-19
  • 怎么使用javascript复制一个对象
    这篇文章主要介绍了怎么使用javascript复制一个对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用javascript复制一个对象文章都会有所收获,下面我们一起来看看吧。方法一:使用Object....
    99+
    2023-07-06
  • C++怎么实现中国象棋
    这篇文章主要介绍“C++怎么实现中国象棋”,在日常操作中,相信很多人在C++怎么实现中国象棋问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现中国象棋”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-25
  • C#中DirectoryEntry对象怎么使用
    DirectoryEntry对象在C#中用于操作和管理目录服务(也称为Active Directory)中的目录项。下面是一些常用的...
    99+
    2023-09-15
    C#
  • C#中怎么调用Excel对象
    本篇文章给大家分享的是有关C#中怎么调用Excel对象,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#调用Excel对象微软的Excel对象模型包括了128个不同的对象,从矩...
    99+
    2023-06-17
  • C#中怎么创建String对象
    本文小编为大家详细介绍“C#中怎么创建String对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中怎么创建String对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。创建 String 对象您可以使用...
    99+
    2023-06-17
  • c++中怎么实现一个对象运行多个线程
    在C++中,可以使用线程库来实现一个对象运行多个线程。下面是一个简单的示例: #include #include class ...
    99+
    2023-10-25
    c++
  • C++中怎么实现对象的拷贝与赋值操作
    今天就跟大家聊聊有关C++中怎么实现对象的拷贝与赋值操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。拷贝构造函数,顾名思义,等于拷贝 + 构造。它肩负着创建新对象的任务,同时还要负...
    99+
    2023-06-17
  • Java中对象池怎么实现
    这篇“Java中对象池怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中对象池怎么实现”文章吧。1. 什么是对...
    99+
    2023-07-02
  • C# 3.0对象和集合初始化怎么实现
    这篇文章主要讲解了“C# 3.0对象和集合初始化怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C# 3.0对象和集合初始化怎么实现”吧!Point类public class...
    99+
    2023-06-17
  • 怎么在Lua中管理C对象
    本篇内容主要讲解“怎么在Lua中管理C对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Lua中管理C对象”吧!今天同事在设计引擎的脚本接口时遇到一个问题...
    99+
    2022-10-19
  • C#中怎么引用托管对象
    C#中怎么引用托管对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#引用托管对象例如下面:FileStream fs = ne...
    99+
    2023-06-17
  • C#中怎么查看对象模型
    C#中怎么查看对象模型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#语言有很多值得学习的地方,这里我们主要介绍C#查看Excel对象模型,包括介绍Range对象的Find(...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作