Рубрики

C ++ | Статическое ключевое слово | Вопрос 4

Предсказать вывод следующей программы на 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;

}

(А) 0
(B) Ошибка компоновщика: неопределенная ссылка B :: a
(C) Ошибка компоновщика: невозможно получить доступ к статическому
(D) Ошибка компоновщика: несколько функций с одинаковым именем get ()

Ответ: (Б)
Объяснение: Произошла ошибка компилятора, поскольку статический член a не определен в B.

Чтобы исправить ошибку, нам нужно явно определить. Следующая программа работает нормально.

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

Тест на этот вопрос

Рекомендуемые посты:

C ++ | Статическое ключевое слово | Вопрос 4

0.00 (0%) 0 votes