Получите немного светлее и темнее цвета от UIColor

Это не обязательно является различием между перегрузками оператора friend и перегрузками оператора функции члена, как это происходит между перегрузками оператора global и перегрузками оператора функции члена.

Одна из причин, почему перегрузка оператора global - это если вы хотите разрешить выражения, в которых тип класса отображается на правой стороне справа двоичного оператора. Например:

Foo f = 100;
int x = 10;
cout << x + f;

Это работает только при наличии глобальной перегрузки оператора для

Foo operator + (int x, const Foo & amp; f);

Обратите внимание, что глобальная перегрузка оператора необязательно должна быть функцией friend. Это необходимо только в том случае, если ему нужен доступ к частным членам Foo, но это не всегда так.

Независимо, если Foo имеет только перегрузку оператора функции члена, например:

class Foo
{
  ...
  Foo operator + (int x);
  ...
};

... тогда мы могли бы иметь только выражения, где в слева оператора плюс появился экземпляр Foo.

140
задан CoreCode 22 July 2012 в 05:50
поделиться