Я знаю, что должен быть оператор удаления, который меня не касается. Мне просто интересно, вау, это сработало. Откуда берется аргумент "размер"?
#include<iostream>
#include<string>
class Base {
public:
Base() { }
void *operator new( unsigned int size, std::string str ) {
std::cout << "Logging an allocation of ";
std::cout << size;
std::cout << " bytes for new object '";
std::cout << str;
std::cout << "'";
std::cout << std::endl;
return malloc( size );
}
private:
int var1;
double var2;
};
int main(int argc, char** argv){
Base* b = new ("Base instance 1") Base;
}
Вот результат:
Регистрация выделения 16 байтов для нового объекта «Базовый экземпляр 1»