Почему в C++ конструктор вызывается дважды?

В этом коде конструктор вызывается дважды.

Как этого избежать?

Если я раскомментирую блок кода конструктора по умолчанию, тогда код не даст удовлетворительного результата..

И я также хочу условное создание экземпляра шаблона, поэтому я использовал указатель void.

#include<iostream.h>
template<class Type>
class Data{
      public:
      Type val;
      Data(Type v){
                cout<<"In Constructor Param";
                val = v;
      }
      Data(){
             //  cout<<"In Constructor Defa";  uncommnet this line
      }
      ~Data(){}
};
int main(){
    Data<void *> obj;
    obj = new Data<float>(31.34f);
    cout<<*(float*)obj.val;
}

Вывод:

In Constructor Param
In Constructor Param
31.34

Спасибо за участие.

5
задан JoeG 7 March 2012 в 16:31
поделиться