实现=操作符时判断自己给自己赋值
来源:互联网 发布:淘宝运营kpi考核指标 编辑:程序博客网 时间:2024/05/22 07:55
// 忽略了给自己赋值的情况
// 的赋值运算符
string& string::operator=(const string& rhs)
{
delete [] data; // delete old memory
{
// 检查对自己赋值的情况
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过来,但是此是原来的数据被释放掉了,这样就丢失了数据,新分配的内存里的数据是不确定的。
- 实现=操作符时判断自己给自己赋值
- 在operator=中检查给自己赋值的情况
- 在operator=中检查给自己赋值的情况
- effective c++(17)在operator=中检查是否“自己赋值给自己”
- 1-自己实现string类(赋值运算符函数)
- 自己给自己打气
- 自己给自己催眠
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- 给自己
- effective c++条款17学习总结--在operator=中检查给自己赋值的情况
- 报关单上常出现的英文单词缩写
- Install Oracle on Solaris 8/9
- 代码命名规则---部分编程常用单词缩写
- 加载AddIn遇到的错误
- 从 MySQL 或 PostgreSQL 迁移到 DB2 Express-C
- 实现=操作符时判断自己给自己赋值
- faxapp解析XML文件
- ◎Vbs脚本编程简明教程之五—错误处理
- 用IIS建立高安全性Web服务器
- 注册ActiveX控件的几种方法.txt
- ActiveX控件在IE浏览器中自动下载
- ◎Vbs脚本编程简明教程之六—修改注册表
- 修改操作系统密码,导致SQL不能启动的解决办法
- SimpleDateFormat多线程问题