Рассмотрим этот код:
int main()
{
int i(6); //this will result in i==6,but consider next initializations
int j(int());
T * p2 = new T();
}
Я обнаружил, что значение j
равно 1, но оно должно быть 0, потому что int()
является временным значением, равным 0.
Кроме того, синтаксис оператора new
— new typename
, но здесь T()
будет временным объектом, а не именем типа.
new T()
динамически выделяет объектT
и инициализирует его значением, а не создает временный. Что вы на самом деле пытаетесь сделать. - person Ben Voigt   schedule 19.02.2012