# re: 关于资源和操作符重载疑问 回复 更多评论
2006-04-22 00:38 by
+操作符返回一个临时对象,不要去new,返回类型不是引用类型,剩下的就好写了。
# re: 关于资源和操作符重载疑问 回复 更多评论
2006-04-22 00:56 by
=操作符一般还要返回该对象的引用。+操作符最好写成全局的,不要作为成员函数,好处下面解释。另外代码似乎充满了C#或JAVA代码风格,错误很多,还是先搞清C++语法再做吧,每种语言都有它的特色。我简单整理了一下:
class SimpleClass
{
friend SimpleClass operator + (const SimpleClass& lhs, const SimpleClass& rhs);
public :
SimpleClass(int value = 0);
SimpleClass& operator = (const SimpleClass& right);
int m_iValue;
} ;
SimpleClass::SimpleClass(int value)
:m_iValue(value)
{
}
SimpleClass& SimpleClass::operator = (const SimpleClass& right)
{
m_iValue = right.m_iValue;
return *this;
}
SimpleClass operator + (const SimpleClass& lhs, const SimpleClass& rhs)
{
return SimpleClass(lhs.m_iValue + rhs.m_iValue);
}
int main()
{
SimpleClass sc1( 1 );
SimpleClass sc2( 2 );
SimpleClass sc3;
sc3 = sc1 + sc2;
sc3 = sc1 + 1;
sc3 = 1 + sc1;
return 0 ;
}
上面所说的好处就是,sc3 = sc1 + 1; 和sc3 = 1 + sc1这2个都可以成立了,如果写成成员函数,则后一个不能编译。
# re: 关于资源和操作符重载疑问 回复 更多评论
2006-04-23 20:41 by
多谢大哥了,呵呵
这段代码是随手写的,也没仔细校验了。要不断学习啊!呵呵