#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; }
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