Рубрики

C ++ | этот указатель | Вопрос 5

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

#include<iostream>

using namespace std;

  

class Test

{

private:

  int x;

public:

  Test() {x = 0;}

  void destroy()  { delete this; }

  void print() { cout << "x = " << x; }

};

  

int main()

{

  Test obj;

  obj.destroy();

  obj.print();

  return 0;

}

(А) х = 0
(B) неопределенное поведение
(C) ошибка компилятора

Ответ: (Б)
Объяснение: оператор удаления работает только для объектов, выделенных с помощью оператора new (см. Этот пост ). Если объект создан с использованием new, то мы можем удалить это, иначе поведение не определено.

Смотрите «удалить это» в C ++ для большего количества примеров.
Тест на этот вопрос

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

C ++ | этот указатель | Вопрос 5

0.00 (0%) 0 votes