Skip to content
Related Articles

Related Articles

Improve Article

C++ | this pointer | Question 5

  • Difficulty Level : Basic
  • Last Updated : 10 Jul, 2018

Predict the output of following C++ program?




#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) 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

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.
My Personal Notes arrow_drop_up
Recommended Articles
Page :