我在线上找到了很多教程/摘录,建议使用这种类型的重载:

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

作为成员,要添加的两个对象是*thisother。第一个是隐式当前对象。

作为一个自由运算符,这两个对象是作为参数传递的对象。

关于c++ - C++重载运算符+,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14630408/

10-11 17:50