C ++中的泛型类

自由911

我正在阅读泛型类主题。我一度陷入困境。下面是一段代码

template <class StackType> class stack
{
    StackType stck[10];
    int tos;
public:
    stack() {tos=0;}
    void push(StackType ob);
    StackType pop();
};

我的问题是,在中template <class StackType> class stack,有两个类(StackTypestack)?

我的意思是,编译器如何将其视为使stack成为StackType或其他嵌套类?

威尔·克斯托德

它不是在创建第二个类,而是在创建一个类型为Stack的类,其中StackType被用户提供的类型所取代。定义它的更好方法是使用类型名(第14.1.2节),这使实际情况更加清楚。有关模板的更多信息,请参见C ++模板

您正在描述的是模板中的嵌套类:

template <typename Type>
class Stack
{
public:
    class InnerType
    {
    };
};

在此示例中,InnerType是其强名是的类Stack<Type>::InnerType,这是基于提供的类型的特定类。因此,如果在代码中的某个位置创建了一个对象,如下所示:

auto x = new Stack<int>();

那么一个类型的类Stack<int>::InnerType将存在。模板类仅在代码中使用时才存在于程序集中,因此,如果未Stack实现的任何变体,则InnerType(任何模板类型的)对象将不存在。

在SO上讨论了有关声明模板的更多详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++:泛型类中的非泛型方法?

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

嵌套泛型/抽象类C#中的嵌套泛型的继承

来自分类Dev

c#中具有泛型类的泛型方法

来自分类Dev

c#获取泛型类中泛型类型参数的名称

来自分类Dev

C#中的多类泛型集合

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

在C#中创建泛型类的字典的辅助方法

来自分类Dev

C#覆盖泛型类中的基类属性

来自分类Dev

在C#中实例化泛型类

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

C#中的多类泛型集合

来自分类Dev

C ++ / Qt中具有泛型的抽象类

来自分类Dev

如何在C#中遍历泛型类的属性?

来自分类Dev

将引用转换为C#中的泛型类

来自分类Dev

当基类在C#中是泛型时,如何将子类转换为基类

来自分类Dev

C ++中的泛型方法

来自分类Dev

C ++中的泛型方法

来自分类Dev

泛型类的字段约束 - C#

来自分类Dev

从泛型类派生的c#问题

来自分类Dev

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

来自分类Dev

C#泛型:修改派生类中隐藏的继承成员

来自分类Dev

如何在C#中收集具有泛型类型的静态类的所有“实例”?

来自分类Dev

C#将抽象类<T>中的泛型T转换为动态

来自分类Dev

C#泛型:修改派生类中隐藏的继承成员

来自分类Dev

需要在C#泛型类中添加2个数字

来自分类Dev

如何在C#中访问泛型静态类的所有特定版本?

来自分类Dev

如何从WPF控件继承并在C#中同时使用泛型类?

来自分类Dev

C#如何在方法中获取泛型类引用

Related 相关文章

热门标签

归档