C++ | Operator Overloading | Question 10
Which of the following operator functions cannot be global, i.e., must be a member function.
(A) new
(B) delete
(C) Conversion Operator
(D) All of the above
Answer: (C)
Explanation: new and delete can be global, see following example.
#include #include #include using namespace std; class Myclass { int x; public: friend void* operator new(size_t size); friend void operator delete(void*); Myclass(int i) { x = i; cout << "Constructor called \n"; } ~Myclass() { cout << "Destructor called \n"; } }; void* operator new(size_t size) { void *storage = malloc(size); cout << "new called \n"; return storage; } void operator delete(void *p ) { cout<<"delete called \n"; free(p); } int main() { Myclass *m = new Myclass(5); delete m; return 0; }
Please Login to comment...