C++ | this pointer | Question 5

Predict the output of following C++ program?

filter_none

edit
close

play_arrow

link
brightness_4
code

#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;
}

chevron_right


(A) x = 0
(B) undefined behavior
(C) compiler error


Answer: (B)

Explanation: delete operator works only for objects allocated using operator new (See this post). If the object is created using new, then we can do delete this, otherwise behavior is undefined.

See “delete this” in C++ for more examples.

Quiz of this Question



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.