#include <iostream>
#include <string>
using namespace std;
/*c++编译器至少给一个类添加四个函数1.默认构造函数2.默认析构函数3.默认拷贝函数,对属性进行值拷贝:浅拷贝就是拷贝对属性值进行简单的拷贝  深拷贝就是在堆区内存进行拷贝4.赋值运算符 operator=对属性进行值拷贝
*/class Person
{public:Person(int mage){age = new int(mage); // 在堆区开辟的数据会返回一个指针}~Person(){if (age != NULL){delete age;age = NULL;}}// 这里不返回值的原因是 返回值也会调用一次拷贝函数 拷贝函数默认浅拷贝 如果我们自己写一个深拷贝 待会析构函数又要重复释放堆区内容引发异常Person &operator=(Person &p){// 先判断是否有属性在堆区 如果有先释放完再进行深入拷贝if (age != NULL){delete age;age = NULL;}age = new int(*p.age);// 返回*this 返回引用是返回真正的自身return *this;}int *age;
};void test()
{Person p1(120);Person p2(30);Person p3(1);p3 = p2 = p1; // =号重载后 实现了深拷贝cout << *p1.age << endl;cout << *p2.age << endl;cout << *p3.age << endl;
}int main()
{test();return 0;
}

C++ operator=相关推荐

  1. TVM Operator Inventory (TOPI)简介

    TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...

  2. C++ 重载运算符 operator

    operator  是什么 operator 是C++的一个关键字,它和运算符(+,-,*,/,=,等等)一起使用,表示一个运算符重载函数 operator 没有返回语句 operator 的作用 : ...

  3. 【C++】operator bool() 和 operator const bool() const

    1.问题描述 在走读QtCreator源码时,看到如下运算符重载 源码在QtCreator-v4.9.2中 src\plugins\projectexplorer\projectexplorer.h ...

  4. ::operator new、sgi stl alloc、dlmalloc测试结果

    注: 使用的dlmalloc为2.8.3版本 使用GetTickCount(),测试1000000次的new/delete 分配空间大小为2的幂,依次递增 在Debug模式下 sgi-stl allo ...

  5. c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]

    说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...

  6. 类的operator new与operator delete的重载

    为什么有必要写自己的operator new和operator delete? 答案通常是:为了效率. 缺省版本的operator new是一种通用型的内存分配器,它必须可以分配任意大小的内存块.同样 ...

  7. Finding the Edges (Sobel Operator)

    Finding the Edges (Sobel Operator) - Computerphile           特别好理解 索贝尔算子 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图 ...

  8. Error in x$e : $ operator is invalid for atomic vectors

    Error in x$e : $ operator is invalid for atomic vectors 目录 Error in x$e : $ operator is invalid for ...

  9. Error in **** : non-numeric argument to binary operator

    Error in **** : non-numeric argument to binary operator 目录 Error in **** : non-numeric argument to b ...

  10. R语言构建随机森林模型错误解决:Error in y - ymean : non-numeric argument to binary operator

    R语言构建随机森林模型错误解决:Error in y - ymean : non-numeric argument to binary operator 目录 R语言构建随机森林模型错误解决:Erro ...

最新文章

  1. Nginx(二) 配置与调试
  2. vue——props的两种常用方法
  3. (已解决)AttributeError: ‘PrecisionRecallDisplay‘ has no attribute ‘from_predictions‘以及查看sklearn版本
  4. 2019年软件测试现状调查
  5. 区跨链应用 | 区块链创业者不要再骗自己了
  6. perl6 中将 字符串 转成十六进制
  7. 高并发下的接口幂等性解决方案!
  8. GitHub 中文文档正式发布了!激动人心的大好事!
  9. java不同进程的相互唤醒_Java线程生命周期与状态切换
  10. IOC和DI的区别详解
  11. 【转载】别了,摩托罗拉(十):“战争部落”和“独立王国”
  12. java中如何使用反射调用方法以及获得类中的属性
  13. 03 ansible核心模块 之 文件类型模块
  14. swagger2 注解说明文档
  15. 简单内网映射到公网方法--免费
  16. 地理在计算机中的应用,计算机在地理教学中应用形式之一:适合于大班教学的演示型...
  17. 【android】apk在线升级
  18. CentOS下转换网易云音乐ncm格式为mp3
  19. ADNI-subject-Info
  20. bon app android,Bon App!

热门文章

  1. 网络基础(二)OSI 网络七层各层功能 --难理解
  2. Wanna Cry病毒之后,那些值得我们注意的事实和真相
  3. 【空心杯四旋翼TinyLeaf】四旋翼基础
  4. hive数据备份与恢复
  5. 不能设置默认打印机的解决办法
  6. 世界最迷人的白色海岸线
  7. unixbench性能测试跑分工具
  8. 段永平的第四个徒弟:拼多多黄峥学会了打法,没领悟到本分
  9. CUMT学习日记——信号与系统之考试复习的记录
  10. Flood---ZJFC Weekly - 5