对基元/类使用模板和指向基元/类的指针安全吗?

Is it safe to to use template for primitive / class and pointer to primitive / class?

本文关键字:指针 安全      更新时间:2023-10-16
template<class T>
class stack {
    T arr[5];
};

class item{};

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

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

简单回答:

复杂答案

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

所以你列出的所有类型都适用于stack

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

可以。

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

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

可以。

是正确的。

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

是。就语言而言,它们都是类模板的有效实例化。