您的位置:程序门 -> c/c++ -> c++ 语言



问一个模板的基本问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


问一个模板的基本问题
发表于:2007-01-02 11:22:06 楼主
1、template <class   _tt>
        class   ……
2、template <type   _tt>
        class……
请问以上两种用法中,类型的定义分别使用了class   和type,请问这有什么区别吗?
发表于:2007-01-02 11:31:031楼 得分:0
在使用中没有区别

发表于:2007-01-02 11:36:212楼 得分:0
我记得可以用class和typename,type以前没见过
发表于:2007-01-02 12:02:033楼 得分:0
其实   type   只要一个#define   type   typename
发表于:2007-01-02 12:03:464楼 得分:0
没区别啊,个人习惯而已
发表于:2007-01-02 12:09:525楼 得分:0
用class会产生理解偏差,会认为模板使用的类型仅限与类,其是原子类型如int也可以用的。
typename风格更好!
发表于:2007-01-02 13:03:456楼 得分:0
同意楼上,

这两个在作用上是一样的.
发表于:2007-01-02 13:04:587楼 得分:0
同意楼上,

这两个在作用上是一样的
发表于:2007-01-02 13:09:328楼 得分:0
同意楼上,

这两个在作用上是一样的
发表于:2007-01-02 14:20:329楼 得分:0
typename具有双重意义,在楼主所说的那种用法中二者没有什么不同,但是当你想要在template中指涉一个嵌套从属类型名称时,就必须在它的前头加上typename,如:
template <typename   c> //这里也可以用class
void   print(const   c&   container)
{
        if(container.size()   > =   2)  
        {
                typename   c::const_iterator   iter(container.begin());//这里必须加typename
                ........
        }
}
发表于:2007-01-02 14:25:2510楼 得分:0
typename具有双重意义,在楼主所说的那种用法重二者没有区别,但是如
template <typename   c>
void   print2nd(const   c&   container)
{
        if(container.size()   > =   2)   {
                typename   c::const_iterator   iter(container.begin());//这里一定要,而只能加
                                                                                                                      //typename
                ........
        }
}
原因是在任何时候你想要在template中指涉一个嵌套从属类型名称,就必须在紧临它的前一个位置放上typename,具体内容请参考effective   c++   条款42
发表于:2007-01-02 14:25:4711楼 得分:0
typename具有双重意义,在楼主所说的那种用法重二者没有区别,但是如
template <typename   c>
void   print2nd(const   c&   container)
{
        if(container.size()   > =   2)   {
                typename   c::const_iterator   iter(container.begin());//这里一定要,而只能加
                                                                                                                      //typename
                ........
        }
}
原因是在任何时候你想要在template中指涉一个嵌套从属类型名称,就必须在紧临它的前一个位置放上typename,具体内容请参考effective   c++   条款42
发表于:2007-01-02 18:45:4212楼 得分:0
先谢谢各位。

可不可以给一个typename   指定的类型指定一个默认值,如何做呢?
是不是这样
template <typename   _type   =   string>
          class………………
瞎想的,◎请高手指点~
发表于:2007-01-02 19:20:2813楼 得分:0
可以,具体内容可以参考c++标准程序库
发表于:2007-01-02 20:45:2914楼 得分:0
早期的c++不支持typename


快速检索

最新资讯
热门点击