Как реализован 'новый' оператор C++

Class B;
B *b  = new B();       // default constructor
B *b1 = new B(10);     // constructor which takes an argument B(int x)

Однако, если мы хотим написать пользовательскую версию new, синтаксис следующий

Class B
{
  /*...*/
  static void* operator new(size_t size);
}

Как оператор new B() преобразуется в вызов функции для operator new(sizeof(B))?

И как он отслеживает, какой конструктор вызывать, то есть как он различает new B() и new B(int x)?

Реализован ли new как макрос в C++?

6
задан jogojapan 7 March 2012 в 04:27
поделиться