template<class T>
class stack {
T arr[5];
};
class item{};
stack <int> obj1;
stack <int *> obj2;
stack <item> obj3;
stack <item *> obj4;
这是一个正确的模板实现吗?
答案 0 :(得分:3)
简单回答:是
复杂答案:
只要类型T可以默认构造(因为它在堆栈中的数组中使用),那么它就可以用作堆栈中的模板参数。
所以,您列出的所有类型都适用于堆栈&lt; T&gt;
经验法则:如果您可以手动编写具有模板化类型的类并且它仍然有效(编译),那么可以将其用作模板参数。
答案 1 :(得分:2)
是的,这没关系。
不要将模板与宏混淆。在宏中,字符串简单地被预处理器替换,这可能导致不正确或不需要的结果。在模板中,T成为真正的类型,因为它本来就是一个typedef。
你知道STL有一个堆栈实现,你(寻找std :: stack)吗?
答案 2 :(得分:0)
是
没错。
模板可以与原生类型一起使用,没有任何问题。
答案 3 :(得分:0)
是。就语言而言,所有这些都是类模板的有效实例化。