我有一个名为 的模板类Variable
,它有一个专门的 char* 构造函数,其定义如下:
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*>
,但这仍然有效。这个任务从哪里来?