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

拷贝(复制)构造函数和赋值函数

String::String(const String &other)  //拷贝构造函数

{

    cout << "自定义拷贝构造函数" << endl;

    int length = strlen(other.m_data);

    m_data = new char[length + 1];

    strcpy(m_data, other.m_data);

}

String & String::operator=(const String &other) //赋值函数

{

    cout << "自定义赋值函数" << endl;

    if (this == &other)

    {   return *this;   }

    else

    {

        delete [] m_data;

        int length = strlen(other.m_data);

        m_data = new char[length + 1];

        strcpy(m_data, other.m_data); return *this;

    }

}

//

1. 调用环境

     (1)当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数: 
     对象作为实参传入到函数形参    
     对象以值传递的方式从函数返回
     一个对象需要通过另外一个对象进行初始化。

    (2)operator=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。

转载于:https://www.cnblogs.com/zhoudingcocng/p/5880484.html

相关文章:

  • MFC静态分割后锁定分隔条/限制分隔条的移动范围 方法1
  • 异常 ORA-00257: archiver error. Connect internal only, until freed
  • 判断32位整数二进制中1的个数的算法
  • json化 datatable
  • 乐视云视频 接口开发 结合百度编辑器
  • css 布局
  • code异常处理
  • 直线方程公式
  • python中的tab补全功能添加
  • 一个失败团队的养成
  • 利用CSS3 clip-path裁剪各种图形。
  • [BZOJ4016][FJOI2014]最短路径树问题
  • 计数问题
  • 排序算法总结第二弹----冒泡排序---javascript描述
  • Codeforces710C【数学】
  • SegmentFault for Android 3.0 发布
  • 【mysql】环境安装、服务启动、密码设置
  • css布局,左右固定中间自适应实现
  • JavaScript实现分页效果
  • java中具有继承关系的类及其对象初始化顺序
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python socket服务器端、客户端传送信息
  • Solarized Scheme
  • unity如何实现一个固定宽度的orthagraphic相机
  • 飞驰在Mesos的涡轮引擎上
  • 记一次删除Git记录中的大文件的过程
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何选择开源的机器学习框架?
  • 如何学习JavaEE,项目又该如何做?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 带你开发类似Pokemon Go的AR游戏
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.ajax中的eval及dataType
  • (02)Hive SQL编译成MapReduce任务的过程
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (二)hibernate配置管理
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (转)程序员技术练级攻略
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • *2 echo、printf、mkdir命令的应用
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Remoting(分离服务程序实现) - Part.3
  • [ C++ ] STL---string类的模拟实现
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Django开源学习 1]django-vue-admin
  • [hdu2196]Computer树的直径
  • [Node + Docker] 聊聊怎么把 nodeclub 构建成 Docker 镜像
  • [nowCoder] 两个不等长数组求第K大数
  • [shell] while read line 与for循环的区别
  • [svc]logstash和filebeat之间ssl加密
  • [TestLink]testlink安装
  • [XA]我们为什么不用XP(eXtreme Programming)极限编程?