找回密码
 注册
查看: 895|回复: 9

大家来讨论下类和模板

[复制链接]
发表于 2005-3-26 12:11:37 | 显示全部楼层 |阅读模式
如题
发表于 2005-3-28 09:57:43 | 显示全部楼层
照我现在的理解:
类就是对事物的抽象,模板就是一个框架

运行时把具体类嵌入到模板里面的时候,就真正形成了实体

模板的好处是运行时动态决定代码。

呵呵,大家有什么看法阿?
回复

使用道具 举报

发表于 2005-3-28 13:45:21 | 显示全部楼层
[quote:3da477dcc4="WindTrace"]
模板的好处是运行时动态决定代码。
[/quote]

错,模板的最大缺点就是不能运行时决定代码。
运行时决定代码的是虚函数。

如果看过C++发明人的访谈录,就会知道,模板从实现上来说是一种拥有特别语法的
,所以模板能干的事情和宏一样是编译时自动生成代码。
回复

使用道具 举报

发表于 2005-3-29 08:36:56 | 显示全部楼层
哦,楼上的意思我明白了,您是说决定代码是在编译期间生成的,而不是在运行期间吧。
不过,连接期间做些什么呢?
回复

使用道具 举报

发表于 2005-3-29 08:58:47 | 显示全部楼层
那么,STL不是在运行期间决定代码的吗?
回复

使用道具 举报

发表于 2005-3-29 09:16:20 | 显示全部楼层
我想也许模板是在编译期间(而不是在预处理期间)进行了源代码重用(类似于宏代换),也就是说在编译期间生成的目标文件中对于模板处代码不是模板类的目标代码,而是源代码;但是决定对象还是是在运行期间生成的!
对不对?
回复

使用道具 举报

发表于 2005-3-29 09:20:15 | 显示全部楼层
其实“决定代码”这个说法有些模糊,不知道是目标代码还是生成对象。
当然了,运行期间不能生成代码,只能生成对象!
回复

使用道具 举报

发表于 2005-3-29 09:50:38 | 显示全部楼层
模板模板,只不过是自动生成源程序的模板,说穿了是一种文本生成工具。

这也是为什么模板一但编写出错吐出的语法错误信息根本不着边际,因为你的一行使用模板的代码可能给生成上百行甚至上千行的源代码。

C++源码-〉经过模板处理器生成的真正源码-〉编译器生成的对象文件-〉连接器生成的目标文件。
回复

使用道具 举报

发表于 2005-3-29 09:59:15 | 显示全部楼层
恩,较为赞同!
回复

使用道具 举报

发表于 2005-4-5 17:32:15 | 显示全部楼层
版主说得很清楚,果然是C++高手。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-9 00:15 , Processed in 0.030356 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表