Salida del programa C++ | conjunto 7

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *