En C++, el programador abstrae objetos del mundo real usando clases como tipos concretos. A veces, se requiere convertir un tipo concreto a otro tipo concreto o tipo primitivo implícitamente. Los operadores de conversión juegan un papel importante en tales situaciones. Es similar a la función de sobrecarga del operador en clase.
Por ejemplo, considere la siguiente clase, aquí estamos creando una clase para números complejos. Tiene dos miembros de datos: real e imaginario.
C++
// CPP Program to demonstrate Conversion Operators #include <cmath> #include <iostream> using namespace std; class Complex { private: double real; double imag; public: // Default constructor Complex(double r = 0.0, double i = 0.0) : real(r) , imag(i) { } // magnitude : usual function style double mag() { return getMag(); } // magnitude : conversion operator operator double() { return getMag(); } private: // class helper to get magnitude double getMag() { return sqrt(real * real + imag * imag); } }; int main() { // a Complex object Complex com(3.0, 4.0); // print magnitude cout << com.mag() << endl; // same can be done like this cout << com << endl; }
5 5
Estamos imprimiendo la magnitud de los objetos complejos de dos maneras diferentes.
Tenga en cuenta que el compilador tendrá más control al llamar a una función adecuada según el tipo, en lugar de lo que espera el programador. Será una buena práctica usar otras técnicas como la función miembro específica de clase/objeto (o hacer uso de la clase Variant de C++) para realizar dichas conversiones. En algunos lugares, por ejemplo al hacer llamadas compatibles con la biblioteca C existente, estos son inevitables.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA