我有一個叫Variable
模板類,與字符*,它被定義爲一個專門的構造函數如下:模板的數據類型
template<>
Variable<char*>::Variable(char * const &arg_value)
{
value = new char[strlen(arg_value) + 1];
strncpy(value, arg_value, strlen(arg_value));
value[strlen(arg_value)] = '\0';
}
現在,我有這樣的聲明,聲明一個Variable<char*>
:
Variable<char*> stringVar = const_cast<char*>("Hi");
在我Variable
定義,我從來不聲明或定義一個拷貝構造函數一個const char *。但是,該聲明完美無缺。爲什麼是這樣?我非常肯定stringVar
的數據類型爲Variable<char*>
,但這仍然有效。這項任務來自哪裏?
聲明中的等號不是賦值。 – chris
它是拷貝構造函數嗎? – ZERO
'變量'不是模板類。這是一個*類模板*。 –