Унарный плюс присутствовал в C, где он абсолютно ничего не делал (очень похоже на ключевое слово auto
). Чтобы этого не было, Страуструпу пришлось бы ввести безвозмездную несовместимость с C.
Когда-то это было в C ++, было естественно разрешить функцию перегрузки, как унарный минус, и Страуструп мог бы ввести ее по этой причине, если бы ее еще не было.
Итак, это ничего не значит. Его можно использовать как декорацию, чтобы сделать вещи более симметричными, например, используя +1,5 в качестве противоположности -1,5. В C ++ он может быть перегружен, но это будет сбивать с толку, если operator+()
что-нибудь сделает. Помните стандартное правило: при перегрузке арифметических операторов делайте что-то вроде int
s.
Если вы ищете причину, по которой он существует, найдите кое-что о ранней истории C. Я подозреваю, что не было веской причины, так как C не был действительно разработан. Рассмотрим бесполезное ключевое слово auto
(предположительно в отличие от static
, которое теперь перерабатывается в C ++ 0x) и ключевое слово entry
, которое никогда ничего не делало (а позже в C90 опущено). Есть известное электронное письмо, в котором Ритчи или Керниган говорят, что, когда они поняли, что у приоритета оператора возникли проблемы, уже было три установки с тысячами строк кода, которые они не хотели нарушать.