Salida del programa C++ | Conjunto 16

Prediga la salida de los siguientes programas C++.

Pregunta 1

#include<iostream>
using namespace std;
  
class Base 
{
public:
    int fun()      { cout << "Base::fun() called"; }
    int fun(int i) { cout << "Base::fun(int i) called"; }
};
  
class Derived: public Base 
{
public:
    int fun(char x)   { cout << "Derived::fun(char ) called"; }
};
  
int main() 
{
    Derived d;
    d.fun();
    return 0;
}

Salida: Error del compilador.
En el programa anterior, fun() de la clase base no es accesible en la clase derivada. Si una clase derivada crea un método miembro con el mismo nombre que uno de los métodos de la clase base, todos los métodos de la clase base con este nombre se ocultan en la clase derivada (consulte esto para obtener más detalles )

Pregunta 2

#include<iostream>
using namespace std;
class Base 
{
   protected:
      int x;
   public:
      Base (int i){ x = i;}
};
  
class Derived : public Base 
{
   public:
      Derived (int i):x(i) { }
      void print() { cout << x ; }
};
  
int main()
{
    Derived d(10);
    d.print();
}

Salida: Error del compilador
En el programa anterior, x está protegido, por lo que es accesible en la clase derivada. El constructor de clases derivadas intenta usar la lista de inicializadores para inicializar directamente x, lo que no está permitido incluso si se puede acceder a x. Los miembros de la clase base solo se pueden inicializar a través de una llamada al constructor de la clase base. A continuación se muestra el programa corregido.

#include<iostream>
using namespace std;
class Base {
   protected:
      int x;
   public:
      Base (int i){ x = i;}
};
  
class Derived : public Base {
   public:
      Derived (int i):Base(i) { }
      void print() { cout << x; }
};
  
int main()
{
    Derived d(10);
    d.print();
}

Producción:

 10 

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado 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 *