关于C++中的模板
C++中的模板是一次革命,它改变了C++的游戏规则,使C++的面向对象思想得到了一个革命性的提升,个人认为模板将会改变现在的C++风格。看看MFC和ATL/STL的代码就知道了。
模板一个最直接的贡献就是让烦琐的C++代码做到与类型无关,比如在C代码中对long和int数据类型敏感,但是使用模板后,我们可以使用任何数据类型来使用模板函数,只要这个数据类型提供了我们所需要的运算。
这就为我们的代码通用提供了很大的方便,我们可以通过模板来调用、扩展我们需要的类,比如,如果我们需要一个类只能生成一个对象,但是该类并没有实现这个功能,那么我们可以这样扩展这个类:
template CSingleClass<class Base>:
public Base
{
,,,
}
这时我们就可以实现生成唯一对象的类。而该类的使用和Base一样。
模板在效率上的主要贡献是将一些运行时的消耗改变到编译时刻。最明显的一个例子就是泛型的运用。其实我们可以使用模板来模拟虚函数,这样做的好处就是可以不生成vtbl,这样函数的调用就不需要通过指针了,在编译时,编译器就可以为我们生成正确的二进制代码。
好了,要回家吃月饼了,我在这里谈谈看法,起个引子,以后继续补上。希望各位能够多发表看法,有什么高见,欢迎!!!
问题点数:1、回复次数:7Top
1 楼sylmoon(专注Oracle)回复于 2002-09-21 18:48:34 得分 0
:)Top
2 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-09-21 18:50:30 得分 0
其实还是CPP太底层了
看VB,variant类型早就普及了Top
3 楼songhtao(三十年孤独)回复于 2002-09-21 18:56:51 得分 0
模版的出现不是一朝一夕了,他有很多弊病,所以到现在也还没有普及。Top
4 楼dilettante(蓝精灵)回复于 2002-09-22 00:55:39 得分 0
凡事过犹不及,template也是如此,正如songhtao所说的。不过我相信它的应用组建普及。Top
5 楼kuhx(50M经纪人,米粉事务代言人)回复于 2002-09-22 10:12:11 得分 0
模板的弊病我认为是出在编译器上的,模板过于复杂的游戏规则使得编译器厂商不能很好的实现。Top
6 楼kuhx(50M经纪人,米粉事务代言人)回复于 2002-09-22 10:26:37 得分 0
to julyclyde(从ASP转向CPP,到处都是P):
VB普及variant也有它的弊端,不过从VB的设计角度来看,这种效率上的弊端并不是很重要的,它主要是一个易用的语言。Top
7 楼antivence(铁丝面)回复于 2002-09-23 09:41:50 得分 1
从各个方面说,如果模板能够健康的运行那么它更定拥有更大的市场,因为它的优势是显而易见的。正因为如此所以安全方面稍微有一些欠缺,比如我的毕业设计,导师要求用模板技术,但是实际上我们为了更安全的用模板,就花了将近三分之一的时间。而且用起来还是小心翼翼,不敢越雷池一步。Top




