条款11:为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 (第三章 构造函数,析构函数和赋值操作符)
来源:互联网 发布:linux查看线程cpu 编辑:程序博客网 时间:2024/06/05 10:49
几乎所有的类都有构造函数,析构函数和赋值操作符。
#include <iostream>
#include <string.h>
using namespace std;
class String
{
public:
String(const char*value);
~String();
private:
char *data;
};
String::String(const char*value)
{
if(value != NULL)
{
data = new char[strlen(value) + 1];
strcpy(data, value);
}
else
{
data = new char[1];
*data = '\0';
}
}
String::~String()
{
delete[]data;
}
int main()
{
String a("hello");
String b("world");
b = a;
}
上面的代码有两个问题:
1.b曾指向的内存永远不会被删除,因而会永远丢失。
2.现在a和b包含的指针指向同一个字符串,那么只要其中一个离开了它的生存空间,其析构函数就会删除掉另一个指针还指向的那块内存。
像这样的情况,必须重定义operator =;- 条款11:为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 (第三章 构造函数,析构函数和赋值操作符)
- 条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 条款 11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数和赋值操作符
- effective C++笔记之条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- 关于为什么要为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
- Effective C++(十一):为需要动态分配内存的类声明一个复制构造函数和一个赋值操作符
- 为含指针变量的类声明一个拷贝构造函数和一个赋值操作符
- 为需要动态分配内存的类声明一个拷贝构造函数与一个赋值运算运算符
- 为需要动态分配内存的类声明一个拷贝构造函数与一个赋值运算运算符
- Effective C++ 学习笔记:为含指针变量的类声明一个拷贝构造函数和一个赋值操作符
- Effective C++ 学习笔记:为含指针变量的类声明一个拷贝构造函数和一个赋值操作符
- 拷贝构造函数和赋值操作符
- 赋值操作符和拷贝构造函数
- 安卓开发-加载图片
- Android 仿网易新闻v3.5:上下滑动的引导页
- 条款9:避免隐藏标准形式的new
- 条款10:如果写了operator new就要同时写operator delete
- linux_shell脚本
- 条款11:为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 (第三章 构造函数,析构函数和赋值操作符)
- 修改linux文件权限命令:chmod
- 条款12:尽量使用初始化而不要在构造函数里赋值
- C#中char[]与string之间的转换
- 条款13:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 条款14:确定基类有虚析构函数
- C++语法基础--模板实参推断,模板类型形参的实参的受限转换,模板实参推断与函数指针
- 如何制作一个类似Tiny Wings的游戏(2) Cocos2d-x 2.1.4
- abstract class与interface的区别