Может кто-нибудь объяснить, что происходит в приведенной ниже программе,
// CPP program to demonstrate
// Overloading new and delete operator
// for a specific class
#include<iostream>
#include<stdlib.h>
using namespace std;
class student
{
string name;
int age;
public:
student()
{
cout<< "Constructor is called\n" ;
}
student(string name, int age)
{
this->name = name;
this->age = age;
}
void display()
{
cout<< "Name:" << name << endl;
cout<< "Age:" << age << endl;
}
void * operator new(size_t size)
{
cout<< "Overloading new operator with size: " << size << endl;
void * p = ::new student();
//void * p = malloc(size); will also work fine
return p;
}
void operator delete(void * p)
{
cout<< "Overloading delete operator " << endl;
free(p);
}
};
int main()
{
student * p = new student("Yash", 24);
p->display();
delete p;
}
Какая польза от перегрузки нового оператора, в моем понимании вышеупомянутой программы перегруженный новый оператор все еще выделяет память с помощью malloc, это можно сделать без перегрузки нового оператора, верно?
Поправьте меня, если я ошибаюсь.
Спасибо!