类模板 – C++快速入门45
类模板
让编程改变世界
Change the world by program
需要注意的地方
在创建模板时,还可以用template 来代替template ,它们的含义是一样一样的。
注意,template 中的class并不意味着T只能是一个类。
再强调一次,不要把函数模板分成原型和实现两个部分。
如果编译器看不到模板的完整代码,它就无法正确地生成代码。
所得到的出错信息从“不知所云”到“胡说八道”什么样都有。
为了明确地表明swap()是一个函数模板,还可以使用swap(i1, i2)语法来调用这个函数。
这将明确地告诉编译器它应该使用哪一种类型。
如果某个函数对所有数据类型都将进行同样的处理,就应该把它编写为一个模板。
如果某个函数对不同的数据类型将进行不同的处理,就应该对它进行重载。
类模板
类模板与函数模板非常相似:同样是先由你编写一个类的模板,再由编译器在你第一次使用这个模板时生成实际代码。
template
class MyClass
{
MyClass();
void swap(T &a, T &b);
}
构造器的实现将是下面这样:
MyClass::MyClass()
{
// 初始化操作。
}
因为MyClass是一个类模板,所以不能只写出MyClass::MyClass(),编译器需要你在这里给出一种与MyClass()配合使用的数据类型,必须在尖括号里提供它。
因为没有确定的数据类型可以提供,所以使用一个T作为占位符即可。
接下来的示例程序将使这一切更加明朗。
我们即将编写一个基于模板的栈。
栈是实际编程过程中一种非常有用的数据结构,它是一种数据存储机制。
栈只提供两个函数:一个用来吧数据压入栈的顶部,另一个用来从栈取出顶部元素(先进后出)
尽管无数次在耳边徘徊,但没有学习过汇编语言的鱼油对于栈这个概念可能还是熟悉又陌生的。
尽管如此,我们还是时刻都在使用它们!
-->

-->
备用视频下载
技术, IT技术, CPP, 视频教程
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!
