C++ | Herencia | Pregunta 13

#include<iostream>
using namespace std;
  
class Base1
{
public:
    char c;
};
  
class Base2
{
public:
    int c;
};
  
class Derived: public Base1, public Base2
{
public:
    void show()  { cout << c; }
};
  
int main(void)
{
    Derived d;
    d.show();
    return 0;
}

(A) Error del compilador en “cout << c;»
(B) Valor basura
(C) Error del compilador en «clase derivada: Base1 pública, Base2 pública»

Respuesta: (A)
Explicación: La variable ‘c’ está presente en ambos superclases de Derivado. Por lo tanto, el acceso a ‘c’ es ambiguo. La ambigüedad se puede eliminar utilizando el operador de resolución de alcance.

#include<iostream>
using namespace std;
  
class Base1
{
public:
    char c;
};
  
class Base2
{
public:
    int c;
};
  
class Derived: public Base1, public Base2
{
public:
    void show()  { cout << Base2::c; }
};
  
int main(void)
{
    Derived d;
    d.show();
    return 0;
}

Cuestionario de esta pregunta

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 *