overload delete [] для массива указателей

Нефы

Я ищу способ перегрузить оператор delete [] или подходящий деструктор для кода:

#include <iostream>
#include <string>
using namespace std;

class A {
private:
    string name;
public:
    A(string name){
        this->name=name;
    };
    ~A(){
        cout<<"Destructor. Destroyed "<<name<<"\n";
    };
    void operator delete(void* p, A* a){
        cout<<"-Delete "<<a->name<<"\n";
    };
    void operator delete(void* pointer){
        cout<<"Delete"<<"\n";
    };
    void operator delete[](void* pointer){
        cout<<"Delete[]"<<"\n";
    };
};

int main(){
int number = 5;
A** a = new A* [ number ];

delete [] a;
    system("pause");
    return 0;
};

Но что бы я ни пробовал, по умолчанию delete [] запускается каждый раз из файла delete2.cpp. Что я делаю не так? [ДОБАВЛЕНО] Добавлена ​​попытка перегрузки delete [].

kfsone

Ваш код не создает и не уничтожает экземпляры A, а только указатели на него.

#include <iostream>
#include <string>
using namespace std;

class A {
private:
    string name;
public:
    A() {}
    A(string name){
        this->name=name;
    };
    ~A(){
        cout<<"Destructor. Destroyed "<<name<<"\n";
    };
    void operator delete(void* p, A* a){
        cout<<"-Delete "<<a->name<<"\n";
    };
    void operator delete(void* pointer){
        cout<<"Delete"<<"\n";
    };
    void operator delete[](void* pointer){
        cout<<"Delete[]"<<"\n";
    };
};

int main(){
int number = 5;
A* a = new A[ number ];

delete [] a;
    system("pause");
    return 0;
};

Как и ожидалось, вызывает оператора []: http://ideone.com/EuS3Hi

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Вызов конструктора динамического массива delete?

Как я могу игнорировать ключевое слово delete?

Вызов функции-члена delete () при нулевом значении

Объект не удаляется по запросу DELETE

Файл-ответ, запрос DELETE и имя файла

оператор "delete []": как определить? Поведение при неправильном использовании с "удалить"?

Is it possible to overload logical and in Python?

Operador Overload () en Python

Function overload with specific number

Very strange overload failure

PowerShell cannot find overload

How to overload convert

Overload signatures, union types and "No overload matches this call" error

Overload resolution for templated conversion operators

String.Join overload not recognized

how to overload an assignment operator in swift

Incomprehensible typescript generic function overload

TypeScript Constructor Overload with Empty Constructor

How to select a specific overload of a method?

Overload method with spread operator not recognized

Overload function/method with template argument

Python: How to overload operator with ast

How to iterate a class that overload the operator[]?

How to overload std::ofstream::put()?

request http commuication and overload problem

how to resolve overload errors in reactjs

Multiple inheritance - wrong overload selected

Overload function/method with template argument

Simple operator overload = in C++

TOP Lista

CalienteEtiquetas

Archivo