Prediga la salida de los siguientes programas C++.
Pregunta 1
class Test1 { int y; }; class Test2 { int x; Test1 t1; public: operator Test1() { return t1; } operator int() { return x; } }; void fun ( int x) { }; void fun ( Test1 t ) { }; int main() { Test2 t; fun(t); return 0; }
Salida: Error del compilador
Hay dos operadores de conversión definidos en la clase Test2. Entonces, los objetos Test2 se pueden convertir automáticamente tanto a int como a Test1. Por lo tanto, la llamada a la función fun(t) es ambigua ya que hay dos funciones void fun(int) y void fun(Test1), el compilador no tiene forma de decidir a qué función llamar. En general, los operadores de conversión deben sobrecargarse con cuidado, ya que pueden generar ambigüedad.
Pregunta 2
#include <iostream> using namespace std; class X { private: static const int a = 76; public: static int getA() { return a; } }; int main() { cout <<X::getA()<<endl; return 0; }
Salida: El programa compila e imprime 76
Generalmente, no está permitido inicializar miembros de datos en la declaración de clase de C++, pero los miembros integrales const estáticos se tratan de manera diferente y se pueden inicializar con declaración.
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
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