operador de conversión y cilindros de operador

operador de conversión

	char b = 'a';
	cout << (int)b << endl;

operador de moldes

En C ++, el nombre del tipo (incluyendo el nombre y similares) en sí es también un operador, es decir, tipo de operador de colada.

operador de conversión de tipo es operador unitario, que puede estar sobrecargado, pero sólo sobrecargado función miembro, como funciones globales no se pueden sobrecargar. Después de sobrecarga apropiado, (nombre de tipo) del objeto de destino es expresión de conversión es equivalente a la .operator nombre de tipo de objeto (), es decir, se convierte en una llamada de función para el operador.

El siguiente procedimiento para el operador doble tipo de colada está sobrecargado.

#include <iostream>
using namespace std;
class Complex
{
	double real, imag;
public:
	Complex(double r = 0, double i = 0) :real(r), imag(i) {};
	operator double() { return real; }  //重载强制类型转换运算符 double
};
int main()
{
	Complex c(1.2, 3.4);
	cout << (double)c << endl;  //输出 1.2
	double n = 2 + c;  //等价于 double n = 2 + c. operator double()
	cout << n;  //输出 3.2
	return 0;
}

La salida del programa es:
1.2
3.2

S 8 operador línea doble está sobrecargado. Cuando sobrecargada operador de conversión no tiene que especificar el tipo del valor de retorno, porque se determina el tipo de valor de retorno, el tipo del propio operador está representado, este es el doble.

efecto de sobrecarga después de que la primera fila 13 (doble) c es equivalente a c.operator doble ().

Con carga pesada de doble operador, donde la aparición de doble este tipo de variable o constante, un objeto de tipo Complex Si lo hace, entonces se invoca el operador doble función miembro del objeto, a continuación, tomar el valor de retorno utilizar.

Por ejemplo, la línea 14, el Banco de compilador de C que esta ubicación si hay un tipo de datos double, puede explicarse a través, pero sólo sobrecargas complejo de clase del operador doble, por lo que el Banco es equivalente a:

double n = 2 + c.operator double();

El siguiente código es también el tipo usado reparto:

int x;
 while(cin>>x){..
 }
 return 0; 

Sobrecargar el programa de la clase de determinación cin bool, mientras que () debería producirse bool tipo, por lo cin >> x es arrojado a bool.

Publicado 52 artículos originales · ganado elogios 0 · Vistas 680

Supongo que te gusta

Origin blog.csdn.net/UniversityGrass/article/details/104687462
Recomendado
Clasificación