实现=操作符时判断自己给自己赋值
2007-07-16 15:48
288 查看
// 忽略了给自己赋值的情况
// 的赋值运算符
string& string::operator=(const string& rhs)
{
delete [] data; // delete old memory
// 分配新内存,将rhs的值拷贝给它
data = new char[strlen(rhs.data) + 1];
strcpy(data, rhs.data);
return *this; // see item 15
}
c& c::operator=(const c& rhs)
{
// 检查对自己赋值的情况
if (this == &rhs) return *this;
...
}
在没有判断自己给自己赋值的时候,释放以前的内存时,重新分配,再将原来的数据COPY过来,但是此是原来的数据被释放掉了,这样就丢失了数据,新分配的内存里的数据是不确定的。
// 的赋值运算符
string& string::operator=(const string& rhs)
{
delete [] data; // delete old memory
// 分配新内存,将rhs的值拷贝给它
data = new char[strlen(rhs.data) + 1];
strcpy(data, rhs.data);
return *this; // see item 15
}
c& c::operator=(const c& rhs)
{
// 检查对自己赋值的情况
if (this == &rhs) return *this;
...
}
在没有判断自己给自己赋值的时候,释放以前的内存时,重新分配,再将原来的数据COPY过来,但是此是原来的数据被释放掉了,这样就丢失了数据,新分配的内存里的数据是不确定的。
相关文章推荐
- C++面试题,自己实现String类的构造函数,拷贝构造函数,赋值操作符,append,replace,+运算符重载等
- C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
- RxJava 自定义操作符(实现自己的操作符)
- 给自己的个人博客加上夜间模式并实现时间段的自动判断
- C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
- &逻辑操作符实现判断的功能
- Android中自己实现App一打开判断是否有更新,并通过依赖AutoInstaller实现自动更新
- 拷贝构造函数与赋值操作符的具体实现 【转】参考度4.5星
- 实现赋值操作符要注意的问题
- 赋值操作符的异常实现方式
- 实现赋值操作符要注意的问题
- string类构造、拷贝构造、赋值、操作符函数实现及注意事项
- 如何判断自己的VPS是那种虚拟技术实现的
- (4.6.22.3)来吧,是时候撸一份自己的RxJava框架啦:装饰器模式实现操作符顺序调用
- 追逐自己的梦想----------辅助制作第十七课:实现技能列表的遍历及判断技能是否可用
- java实现判断一个经纬度坐标是否在一个多边形内(经自己亲测)
- c# 判断是否为空然后赋值的4种实现方法
- RxJava 自定义操作符(实现自己的操作符)
- linux sh 脚本有关于文件判断操作符,与if配合实现逻辑控制
- 利用5个标签,4个文本框,2个按钮,自己设计布局实现输入三边求三角形面积。界面如下所示。三角形类的编写可以使用实验4中已经写过的三角形类,当点击“判断三边”时,若能构成三角形,在标签5上显示“可以构成三角形!”,如不能构成三角形,在标签5上显示“不能构成三