@likilix
Лицемер

Почему не вызывается перегруженный оператор new?

#include <iostream>
#include <windows.h>

using namespace std;

class CHeap
{
	public:
		static void* operator new(std::size_t size)
		{
			return 0;
		}
};

class CFileSysmon : public CHeap
{
  public:
	  CFileSysmon(void);
	 ~CFileSysmon(void);

  private:
	  int *ptr;

};

CFileSysmon::CFileSysmon(void)
{
	ptr = new int;
}

CFileSysmon::~CFileSysmon(void)
{

}

int main()
{
	CFileSysmon hFileSysmon;

  return cin.get();
}
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 2
Потому что вы не вызываете свой оператор, но вызываете оператор для int.
Ответ написан
Daniro_San
@Daniro_San
Программист
CFileSysmon *const hFileSysmon = new CFileSysmon();

А взять и вызвать оператор new вам что не позволяет?
И да, я понимаю что это пример, но всё-же замените return 0 на return nullptr, всё-таки C++11 был, C++14 есть, C++17 скоро будет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы