这里是基本上实现对类名为CMyString
=赋值的代码,代码是正确的。关于运算符的C++访问
CMyString& CMyString::operator =(const CMyString &str) {
if(this == &str)
return *this;
delete []m_pData;
m_pData = NULL;
m_pData = new char[strlen(str.m_pData) + 1];
strcpy(m_pData, str.m_pData);
return *this;
}
该实例通过引用传递,第一个'if'检查传入的实例是否为自身。我的问题是:为什么它使用&str
来比较,而不是str
已经包含实例的地址?任何人都可以解释这条线的工作原理吗?
此外,我只是想确保this
包含对象的地址:这是正确的吗?
的建议,中序进行赋值运算execption SAFTY其更好地存储临时指针中的m_pData在末尾删除临时指针,以便即使在为m_pData = new分配内存时发生异常char [strlen(str.m_pData)+ 1];源对象的数据是安全CMyString&CMyString ::运算符=(const的CMyString&STR){ 如果(这==&STR) 返回*此; char * temp = m_pData; m_pData =新的char [strlen的(str.m_pData)+ 1]; strcpy(m_pData,str.m_pData); delete [] temp; temp = NULL; return * this; } – shivakumar 2013-04-09 06:11:31
我知道,我还想着把类似的功能,但没有异常处理,但是这不是真的什么,我就在这里...但我还是谢谢你 – fiftyplus 2013-04-09 06:14:49