Рубрики

C ++ | Деструкторы | вопрос 2

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

#include <iostream>

using namespace std;

   

int i;

   

class A

{

public:

    ~A()

    {

        i=10;

    }

};

   

int foo()

{

    i=3;

    A ob;

    return i;

}

   

int main()

{

    cout << foo() << endl;

    return 0;

}

(А) 0
(Б) 3
(С) 10
(D) Ничего из вышеперечисленного

Ответ: (Б)
Объяснение: При возвращении из функции деструктор является последним методом, который должен быть выполнен. Деструктор для объекта «ob» вызывается после того, как значение i скопировано в возвращаемое значение функции. Таким образом, прежде чем деструктор сможет изменить значение i на 10, будет скопировано текущее значение i, и, следовательно, выходные данные будут i = 3. См. Это для более подробной информации.
Тест на этот вопрос

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

C ++ | Деструкторы | вопрос 2

0.00 (0%) 0 votes