es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C++ cómo crear un tipo especial de operador.

Creé una clase Marks y el operador +.

#include <iostream>

using namespace std;

class Marks {
    int intmark;
    int extmark;
public:
    Marks() {
        intmark = 0;
        extmark = 0;
    }
    Marks(int im, int em) {
        intmark = im;
        extmark = em;
    }
    void display() {
        cout << intmark << endl << extmark << endl;
    }

    Marks operator+(Marks m) {
        Marks temp;
        temp.intmark = intmark + m.intmark;
        temp.extmark = extmark + m.extmark;
        return temp;
    }
};

int main()
{
    Marks m1(10, 20), m2(30, 40);
    Marks m3;
    m3= m1 + m2;
    m3.display();
    return 0;
}

Quiero cambiar el operador + por algo diferente.

Me refiero a que el operador se ejecute si:

m3 = m1 + m2;

pero ¿podría cambiarlo a algo como esto?

cpp
m3 = m1 specialoperator m2
No quiero que esté el signo +.
¿Podría cambiarlo por alguna frase o operador numérico?
m3 = m1 11--11 m2
m3 = m1 -MIoperador- m2

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes cambiar el símbolo del operador a algo diferente sobrecargando otro operador. Por ejemplo, si quieres usar el símbolo “++” como el operador, puedes sobrecargar el operador “++” de la siguiente manera:

    “`c++
    Marks operator++(Marks m) {
    Marks temp;
    temp.intmark = intmark + m.intmark;
    temp.extmark = extmark + m.extmark;
    return temp;
    }


    Entonces puedes usarlo de la siguiente manera: ```c++ m3 = m1++m2;

    De manera similar, puedes usar cualquier otro símbolo de operador de tu elección sobrecargando ese operador. Por ejemplo:

    “`c++
    Marks operator-MIoperador-(Marks m) {
    Marks temp;
    temp.intmark = intmark + m.intmark;
    temp.extmark = extmark + m.extmark;
    return temp;
    }


    Entonces puedes usarlo de la siguiente manera: ```c++ m3 = m1 -MIoperador- m2;

Comments are closed.