扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:中国IT实验室 2007年12月11日
关键字:
C++/CLI支持两种参数化类型机制,模板和泛型,用于定义参数化引用、值和接口类,函数和委托。从表面上看,参数化的generic和template至少在语句构成上是等同的(除了template或generic关键字有所不同)。而在其它方面,它们有显著的不同。
考虑一下Figure 2中的两个栈声明,template实例(tStack),通过标准模板库(STL)的CLI实现提供了一个使用动态vector容器的例子,以及generic实例(gStack),通过System::Collections::Generic名字空间提供的使用动态List<T>容器的例子。两者在Visual Studio 2005中都是新的参数化类型集合库。
|
通过在类名后的尖括弧中指定实际类型来创建参数化类型实例。例如,Figure 3依次示范了用整型和字符串类型参数实例化的template堆栈。为了创建等同的generic堆栈实例,Figure 4所用的两种类型参数是相同的。
|
|
参数化类型对象的实际处理,例如is和ss,与非参数化类型对象的处理完全一样。参数化类型的一个好处是单一的源定义能潜在地产生出无数种型实例。该例子中,generic和template堆栈类在相同的参数化类源代码之外都支持字符串和整型类。在所有已知类型的应用程序中使用它们时没有真正的约束。正如你将会在后续专栏中看到的那样,并不是所有参数化类型都这样。
generic和template定义以及种型实例在这里几乎是等价的,尽管并不是所有的参数化类型都这样。或者说在支持两种机制的C++/CLI中益处不多。当我在后续专栏中详细讨论两种机制时,你会看到其它一些差异。正是存在这些差异,在我遇到它们时,将它突出出来,而不是反复说其共性,似乎是整合其全貌的更好方法。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者