操作符有两种重载方式:成员函数和全局函数。以Integer类来说明这两种方式。
class Integer {
long i;
Integer* This() { return this; }
public:
Integer(long ll = 0) : i(ll) {}
// No side effects takes const& argument:
friend const Integer&
operator+(const Integer& a);
}
const Integer& operator+(const Integer& a) {
cout << "+Integer\n";
return a; // Unary + has no effect
}
12.1.2 成员函数方式
class Integer {
long i;
Integer* This() { return this; }
public:
Integer(long ll = 0) : i(ll) {}
// No side effects takes const& argument:
const Integer& operator+() const{
cout << "+Integer\n";
return *this;
};
}
12.2 一