使用模板原始/类和指向原始/类的指针是否安全?

时间:2011-09-19 06:37:55

标签: c++

template<class T>
class stack {
    T arr[5];
};


class item{};


stack <int> obj1;
stack <int *> obj2;
stack <item> obj3;
stack <item *> obj4;

这是一个正确的模板实现吗?

4 个答案:

答案 0 :(得分:3)

简单回答:

复杂答案
只要类型T可以默认构造(因为它在堆栈中的数组中使用),那么它就可以用作堆栈中的模板参数。

所以,您列出的所有类型都适用于堆栈&lt; T&gt;

经验法则:如果您可以手动编写具有模板化类型的类并且它仍然有效(编译),那么可以将其用作模板参数。

答案 1 :(得分:2)

是的,这没关系。

不要将模板与宏混淆。在宏中,字符串简单地被预处理器替换,这可能导致不正确或不需要的结果。在模板中,T成为真正的类型,因为它本来就是一个typedef。

你知道STL有一个堆栈实现,你(寻找std :: stack)吗?

答案 2 :(得分:0)

没错。

模板可以与原生类型一起使用,没有任何问题。

答案 3 :(得分:0)

是。就语言而言,所有这些都是类模板的有效实例化。