Рубрики

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

Предсказать вывод следующей программы на C ++.

#include <iostream>

using namespace std;

  

class Test

{

    static int x;

public:

    Test() { x++; }

    static int getX() {return x;}

};

  

int Test::x = 0;

  

int main()

{

    cout << Test::getX() << " ";

    Test t[5];

    cout << Test::getX();

}

(А) 0 0
(Б) 5 5
(С) 0 5
(D) Ошибка компилятора

Ответ: (с)
Объяснение: Статические функции можно вызывать без какого-либо объекта. Так что вызов «Test :: getX ()» в порядке.

Поскольку x инициализируется как 0, первый вызов getX () возвращает 0. Обратите внимание на утверждение x ++ в конструкторе. Когда создается массив из 5 объектов, конструктор вызывается 5 раз. Таким образом, x увеличивается до 5 перед следующим вызовом getX ().
Тест на этот вопрос

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

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

0.00 (0%) 0 votes