c++
  • operator-overloading
  • 2017-01-28 2 views 1 likes 
    1

    Когда я перегрузить, позволяет говорить, что оператор «+» для класса в C++C++ операторы перегруженные как следствие («+», «+ =»)

    MyClass MyClass::operator+(MyClass _c){ 
        //code here 
    } 
    

    ли она автоматически применяется к " + = 'оператор? Компилятор автоматически заменит это для своей более длинной конусной части (a + = b < -> a = a + b)? Или это функция оператора времени выполнения?

    +1

    Это не так. По крайней мере, компилятор MSVC++, похоже, считает его недействительным. – jumper0x08

    +1

    Написание 'operator + =' в терминах 'operator +' звучит очень дорого - создайте временную LHS из этого, добавьте RHS, затем присвойте временный результат этому. Это будет немного проще в обратном направлении - напишите 'operator + =' и реализуйте 'operator +' в терминах этого. – Kos

    +0

    Кроме того, условно оператор 'operator +()' не меняет ни один из его операндов (т. Е. 'A + b' не изменяет ни' a', ни 'b'). Это можно выразить с помощью 'const'. – Peter

    ответ

    3

    Нет. Это не так. Вы также должны перегружать их.

    Смежные вопросы