What iMalc is trying to say is that when you put your operator + inside the class, the left-hand expression of the operator is the current object instance.
Let me give you an example:
Code:
#include <iostream>
 
class Int {
    int n_;
public:
    Int(int n=0) : n_(n) { }
    int getN() const { return n_; }

    Int operator+(int b) {
        return Int(getN() + b);
    }
};

int main() {
    Int i(5);
    int j = 7;
    Int k = i + j;   // using operator+
    std::cout << k.getN() << "\n";
}
The operator "+" has two operands: to the left of it (the left-hand side expression, which I will call "lhs"), and to the right of it (the right hand expression which I will call "rhs").
In you put the operator inside the class, the lhs will always be an instance of that class (in this example, Int).
If you put it outside the class, then you must tell the compiler what type the lhs is.

The above code should compile, but throw the order of the expressions around, as in the following example, and it will compile no longer:
Code:
#include <iostream>
 
class Int {
    int n_;
public:
    Int(int n=0) : n_(n) { }
    int getN() const { return n_; }

    Int operator+(int b) {
        return Int(getN() + b);
    }
};

int main() {
    Int i(5);
    int j = 7;
    Int k = j + i;   // using operator+
    std::cout << k.getN() << "\n";
}