模板的以下默认参数是否实例化了类型为EmptyClass
的模板?
class EmptyClass{};
template <typename TYPE=EmptyClass>
class Sample
{
public:
static void test()
{
TYPE::Serialize();
}
};
答案 0 :(得分:0)
没有。模板在使用时被实例化,并在每个功能的基础上实例化。
默认参数值只是未指定参数时要使用的类型。但这本身并不意味着使用。
当您调用Sample<>::test()
时,Sample<Emptyclass>::test()
被实例化并尝试EmptyClass::serialize()
调用,导致编译时错误(因为Emptyclass
被声明为没有此类函数)
尝试补充更多功能,包含引用不同参数的不同编译时错误,并且您将看到在不使用该函数之前不会产生错误。
答案 1 :(得分:-1)
不,在该代码中创建了任何EmptyClass实例。 Serialize是一个静态函数。并且从不调用EmptyClass的构造函数(在代码中显示)