C++中重载赋值运算符应该注意的地方
- 必须为该类型的引用
- 原因:必须返回一个引用,才可以允许连续赋值 ;
- 必须返回自身实例的引用(*this)
- 传入参数申明为常量引用
- 如果传入的参数不是引用而是实例,那么从形参到实参会调用一次复制构造函数;
- 传入参数和当前的实例(*this)是否为同一实例.
4. 考虑当因内存不足在new char时候抛出异常
string& string::operator=(const string& str){ if( this==&str ) return *this; delete []data; m_data = null; m_data = new char[ strlen(str.data)+1] ; strcpy(data, str.data); return *this; }
string& string::operator=(const string& str){ if( this != &str){ string temp(str); char *p = temp.data; temp.data = data; data = p; } return *this; }
Reference
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。