我在线上找到了很多教程/摘录,建议使用这种类型的重载:NumeroFarlocco operator+(NumeroFarlocco n1, NumeroFarlocco n2) { ... }
但是,如果我将此定义放在.h文件中:NumeroFarlocco operator+(NumeroFarlocco n1, NumeroFarlocco n2);
我有这个错误:
http://msdn.microsoft.com/it-it/library/1zy85x1e(v=vs.80).aspx
所以我发现我必须像这样定义重载:
NumeroFarlocco operator+( NumeroFarlocco n2 );
但是在实现中,我无法理解如何访问操作中涉及的第一个元素的实例变量(在我先前的代码中为n1的实例变量),this-> variable不起作用,两个变量都没有...
最佳答案
有两种方法可以重载二进制运算符:
作为班级成员
作为免费运营商
两者在不同的上下文中均有效:
struct A
{
A operator+ (const A& other) const;
};
和
struct A
{};
operator+(const A& first, const A& second);
注意使用
const
。作为成员,要添加的两个对象是
*this
和other
。第一个是隐式当前对象。作为一个自由运算符,这两个对象是作为参数传递的对象。
关于c++ - C++重载运算符+,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14630408/