синхронизировано (это) в Java безопаснее?

В четвертом издании «Язык программирования на C ++» Бьярне Страуструп пишет (§12.1.3):

К сожалению, для сохранения совместимости C, const игнорируется на самом высоком уровне тип аргумента. Например, это два объявления одной и той же функции:

void f(int);
void f(const int);

Итак, кажется, что, обратившись к некоторым другим ответам, это правило C ++ не было выбрано из-за неразличимости двух функций или других подобных рассуждений, но вместо этого как менее оптимальное решение для совместимости.

Действительно, на языке программирования D возможно иметь эти два перегрузки. Тем не менее, в противоположность тому, что могут предложить другие ответы на этот вопрос, непреднамеренная перегрузка предпочтительна, если функция вызывается с литералом:

void f(int);
void f(const int);

f(42); // calls void f(int);

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

0
задан bunnyshell 27 July 2012 в 13:57
поделиться