новый оператор и удалить перегрузку оператора - PullRequest
0 голосов
/ 21 ноября 2018

Может кто-нибудь объяснить, что происходит в приведенной ниже программе,

// 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, это можно сделать без перегрузки нового оператора, верно?

Поправьте меня, если я ошибаюсь.

Спасибо!

...