C++ | este puntero | Pregunta 5

¿Predecir la salida del siguiente programa 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;
}

(A) x = 0
(B) comportamiento indefinido
(C) error del compilador

Respuesta: (B)
Explicación: el operador de eliminación solo funciona para los objetos asignados mediante el operador nuevo (consulte esta publicación ). Si el objeto se crea usando new, entonces podemos eliminarlo; de lo contrario, el comportamiento no está definido.

Consulte «eliminar esto» en C++ para obtener más ejemplos.
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 *