小问题:C++ 重载赋值操作符的两种方式?
在使用C++时发现有二种赋值操作符的重载方式,还是看代码吧。
方式1:
void CStudent::operator= ( CStudent& student )
{
m_strID = student.m_strID;
m_strPWD = student.m_strPWD;
}
方式2:
const CStudent& CStudent::operator= ( const CStudent &student )
{
m_strID = student.m_strID;
m_strPWD = student.m_strPWD;
return *this;
}
上面这二种方法都可以达到赋值的目的。
我想知道这两种方法有何不同?哪种方法更规范?
问题点数:50、回复次数:5Top
1 楼foochow(无聊,灌水......)回复于 2005-07-02 22:46:17 得分 5
都一样,只是第2个可以实现连续赋值:-)Top
2 楼newbiestar()回复于 2005-07-02 22:59:51 得分 5
第一个不符合语义,因为从C开始=操作符就返回赋值以后的值,而且C++也是这样,std里面的各个成员也是这样的
另外,重载成返回const TYPE&的函数没有必要,天生返回的是*this的话,这个必然是要被修改的……Top
3 楼maplewasp(浪影)回复于 2005-07-02 23:10:41 得分 30
同意newbiestar的说法!Top
4 楼fangrk(加把油,伙计!)回复于 2005-07-02 23:19:51 得分 10
CStudent& CStudent::operator= ( const CStudent &student )
{
m_strID = student.m_strID;
m_strPWD = student.m_strPWD;
return *this;
}
你的第二种方法,返回类型不必是constTop
5 楼SanTa()回复于 2005-07-03 01:12:39 得分 0
非常感谢大家的回复!Top




