混迹于C++之拷贝赋值函数和拷贝构造函数(三)
来源:互联网 发布:matlab trapz函数算法 编辑:程序博客网 时间:2024/05/28 06:05
#include <stdlib.h>#include <string.h>class apple{public: apple() { pName = NULL; pName = new char[100]; memset(pName, 0x00, 100*sizeof(char)); } apple(const apple& other) { *this = other; } apple& operator=(const apple& other) { if (this == &other) { return *this;//同一个对象 } if (pName != NULL) { delete []pName;//释放原来的指针 pName = NULL; } int length = strlen(other.pName); this->pName = new char[length]; memcpy(this->pName, other.pName, length); return *this; } ~apple() { if (NULL != pName) { delete []pName; pName = NULL;//即使赋值为NULL,也不能阻止出现被释放两次 } }private: char* pName; //类里面含有指针};void process(apple* b){ apple* a; a = b; printf("abOK!\n"); apple *c,d;//只有一个实例,且申明一个对象指针,指针没有调用构造函数和析构函数,而实例类变变量则会调用析构函数 c = new apple(d);//调用到拷贝构造函数 delete c; printf("cdOK!\n"); apple *e,*f; e = f; //将e的地址覆盖为f的地址,不是实体变量,没事 printf("efOK!\n"); //apple *g, *h; //*g = *h;//意图引用空指针,段错误 printf("i,k Now!\n"); apple i, j; i = j; //调用到赋值构造构造函数}int main(){ apple b; process(&b); return 0;}//以上用valgrind检测无内存泄漏。//很多技巧性的东西,不用,不深究它内部的机理,就难免乎略其存在,记之。
0 0
- 混迹于C++之拷贝赋值函数和拷贝构造函数(三)
- 混迹于C++之拷贝赋值函数和拷贝构造函数(一)
- 混迹于C++之拷贝赋值函数和拷贝构造函数(二)
- 【C++】拷贝构造函数和赋值函数
- 拷贝构造函数和拷贝赋值函数
- 赋值和拷贝构造函数
- 拷贝构造和赋值函数
- c++_7: 拷贝构造函数和赋值构造函数
- C ++ 拷贝构造函数和赋值构造函数 非常经典
- 拷贝构造函数和赋值构造函数
- 拷贝构造函数和赋值构造函数
- 构造函数,拷贝构造函数,和赋值
- 赋值构造函数和拷贝构造函数
- 拷贝构造函数和赋值构造函数
- 拷贝构造函数和赋值构造函数
- 赋值构造函数和拷贝构造函数
- 拷贝构造函数和赋值构造函数
- C++之拷贝构造函数和赋值构造函数
- 从Delphi开始学Cocos2dx-3.0[15]:关于精灵帧和精灵帧缓存
- Java学习第九_十天:内部类、异常、包
- Sereja and Dima
- hdu 1757 A Simple Math Problem(矩阵快速幂)
- HDU 2048 错排问题
- 混迹于C++之拷贝赋值函数和拷贝构造函数(三)
- CVPR 2013重要文章(七月前)转
- 《C++Primer》学习疑惑1-----const头文件定义问题
- HTML5 Canvas 第一篇
- [DP]FJSDFZOJ 1143 数字三角形
- 吾之经历
- fastjson的使用心得
- python invalid syntax
- C++ Event Model