检查自本人赋值的if语句写法

C++语言 码拜 8年前 (2016-01-31) 918次浏览
林博士在《高质量C编程指南》中写到:
String & String::operate =(const String &other)
{
// (1) 检查自赋值
if(this == &other)
return *this;
// (2) 释放原有的内存资源
delete [] m_data;
// (3)分配新的内存资源,并复制内容
int length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data, other.m_data);
// (4)返回本对象的引用
return *this;
}
注意不要将检查自赋值的if 语句
if(this == &other)
错写成为
if( *this == other)
本人想问下,为什么不能写成if( *this == other)?
解决方案:40分
原因是if(this == &other)比较的是指针能否相等,而if( *this == other)是比较这两个对象能否相等
而这里需要判断的能否是自赋值,就是让对象等于对象自身,所以应该是用前者(后者的话比较的是两个对象能否相等,相等的两对象并不一定是同一个对象!)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明检查自本人赋值的if语句写法
喜欢 (0)
[1034331897@qq.com]
分享 (0)