C++ | Palabra clave estática | Pregunta 4

Prediga la salida del siguiente programa C++.

#include <iostream>
using namespace std;
  
class A
{
private:
    int x;
public:
    A(int _x)  {  x = _x; }
    int get()  { return x; }
};
  
class B
{
    static A a;
public:
   static int get()
   {  return a.get(); }
};
  
int main(void)
{
    B b;
    cout << b.get();
    return 0;
}

(A) 0
(B) Error del vinculador: Referencia indefinida B::a
(C) Error del vinculador: No se puede acceder a una estática
(D) Error del vinculador: múltiples funciones con el mismo nombre get()

Respuesta: (B)
Explicación: Hay un error del compilador porque el miembro estático a no está definido en B.

Para corregir el error, necesitamos definir explícitamente a. El siguiente programa funciona bien.

#include <iostream >
using namespace std;

class A
{
private:
    int x;
public:
    A(int _x)  {  x = _x; }
    int get()  { return x; }
};

class B
{
    static A a;
public:
   static int get()
   {  return a.get(); }
};

A B::a(0);

int main(void)
{
    B b;
    cout << b.get();
    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 *