¿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