Перегрузить оператор или сделать функцию (C ++) - PullRequest
0 голосов
/ 02 февраля 2012

Что из следующего быстрее?

Метод 1:

int foo (int A, int B) {

    // write equations
}

Метод 2:

int operator| (int A, int B) {

    // write equations
}

Ответы [ 3 ]

8 голосов
/ 02 февраля 2012

Нет никакой разницы в отношении скорости выполнения.

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

6 голосов
/ 02 февраля 2012

Они обе являются функцией (и, следовательно, не имеют разницы в скорости), просто она (оператор) может использовать более «причудливый» синтаксис для вызова.

Ваш вопрос при принятии решения о том, какой из двух использовать, должен быть не скоростью, а скорее, если значение является естественным для типа, над которым вы используете оператор.Когда вы используете это, чтобы сделать что-то, что было бы совершенно удивительно для читателя, учитывая, что он знает, что обычно делает оператор, тогда не перегружайте оператор.of int, и на тот случай, если вы не знали, вы не можете перегружать операторы для int, один из параметров перегруженного оператора должен быть пользовательского типа)

2 голосов
/ 02 февраля 2012

Нет разницы, они реализованы точно так же внутри каждого компилятора, о котором я когда-либо слышал. Чтобы быть уверенным: профиль это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...