Почему являются операторы иногда автономными и иногда методами класса?

Вы могли сделать выбор на таблицах, вставляющих запятые после каждого поля, чтобы произвести csv или использовать инструмент GUI, чтобы возвратить все данные и сохранить его к csv.

5
задан Paul Tomblin 7 December 2009 в 19:12
поделиться

3 ответа

вызывающий - это метод ядра, который позволяет вам это сделать, поэтому вызывающий [0] сообщит вам о непосредственном вызывающем лице функции.

быстрый способ получить только имя функция может быть

caller[0][/`\S+/].chop[1..-1]

, это вернет имя вызывающего метода в виде строки, которую вы затем можете использовать, как хотите

разница между глобальным оператором и оператором-членом

11
ответ дан 18 December 2019 в 09:50
поделиться

Если у вас есть двоичный оператор, например +, вы обычно хотите, чтобы преобразование типов выполнялось для обоих операндов. Например, оператор конкатенации строк должен иметь возможность преобразовывать один или оба своих операнда из символа * в строку. Если это так, то это не может быть функция-член, поскольку левый операнд будет * this, и преобразование не будет выполнено.

Например:

operator+( a, b );  // conversions performed on a and b
a->operator+( b );  // conversion can only be performed on b
5
ответ дан 18 December 2019 в 09:50
поделиться

Если оператор определен вне класса, он считается глобальным и позволяет отображать другие типы в левой части оператора.

Например, для данного класса Foo , с помощью глобального оператора + вы можете сделать:

Foo f;
Foo f2 = 55 + f;
1
ответ дан 18 December 2019 в 09:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: