C 名家对话_21_模板特化,缺省参数和其他一些有趣的事情.doc
《C 名家对话_21_模板特化,缺省参数和其他一些有趣的事情.doc》由会员分享,可在线阅读,更多相关《C 名家对话_21_模板特化,缺省参数和其他一些有趣的事情.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、模板特化,缺省参数和其他一些有趣的事情 amature 翻译 -我们监视着不远处的大门,生怕从木卫二基地尾随而来的入侵者会跟进来。但看来他们很满足于让我们呆在里面,或至少等我们自己出来。大门那边依然静悄悄一片。 不管我们是多么警戒,大笨蛋们仍然占领了我们的许多岗哨。我们杀死了很多大笨蛋有时是依靠我们的常规武器,有时是外星文物,最起码其中之一可以喷射出高能闪电使得在它周围想瞄准的任何东西都是非常危险的但是大笨蛋们似乎是源源不断地产生的,怎么也杀不完。 因此兵变并不是我们唯一担心的东西。 -“嘿,伙计,事情进展得怎样了?听到鲍勃的声音,我有点紧张。然而令我吃惊的是鲍勃没有摆出他那一贯的高人一等的姿
2、态。他非常地.恕我直言.平易近人。 还不坏吧,鲍勃,我答了一声,同时也转过身来面对他,我们互相凝视了一会。 嗯,伙计,我想知道你是否愿意帮我一个忙。 我大吃一惊,哑然无语。这个鲍勃,是部门里最差的程序员,热衷于写晦涩的、难于维护的代码,偏偏却自命不凡,你在一个街区以外就能感受到他那股傲慢劲。他只有在把一大沓问题扔给我(同时把他的咖啡放在我的书桌上)时才造访我的蜗居,而现在,就这么一个人,竟然站在我的小屋里,请求我的帮助! “啊哈,当然可以,鲍勃,”我最后回到道,“出了什么问题?” 鲍勃自己坐到了客椅上。OK,问题就在这里面。 我已经设法把它浓缩成这段源代码”,他拿过我的键盘并从我的工作站里打开
3、了一个文件。我仔细地看着它: #include templateclass c T msize;public: void print_size() std:cout size std:endl; ;template class c char m100;public: void print_size() std:cout 100 std:endl; ;int main() c().print_size(); c().print_size();“首先,我不明白它怎能通过编译。我的意思是,我认为模板的参数必须是一个类或类型的名字,而不是一个普通参数。” 我问道:“你是指参数 size_t ?”鲍勃咕
4、哝了一声,我知道他是同意我刚才的问题。“是的,当我第一次看到一个无类型参数的时候,我的大脑也停顿了一会。我习惯于看到 class 或 typename 声明而不是通常的参数。Guru肯定这是允许的,但她让我自己到标准里去查找。你只能使用整型或枚举型,对象或函数的指针或引用,或者是指向成员的指针 1 。实际上,对于整数类型,参数变成了一个整型常量表达式.” “!#$%&*?”鲍勃打断了我。 “一个编译时常量,”我将他的嚎叫翻译成人话。“总之,由于它是整数哦,也就是说由于它是编译时常量,就允许你用 size 来声明对象 T 的数组。相当灵活。” “自从我学会了这一点,我经常玩弄这样一个念头:使用一
5、个模板来提供一种更加灵活的 switch 语句,就像,”我打开了一个新的文件,键入下列文字: templatevoid f(int currentValue) switch(currentValue) case value1: . case value2: . case value3: . void g() f(1); / 执行 value1 情形 f(1); / 执行 value3 情形“我不能拿出一个使用它的实际程序,所以我把它归入相当不错,但尚未实际应用这一类。” “除了其它一些无用的信息,在集会上还提出了一些东西,毫无疑问,”鲍勃打断了我,扫了一眼他的手表,“哦,伙计,那相当有趣,但是
6、回到我的问题”。他把身体凑过来,关掉了我的文本窗口并重新打开他先前的程序。“看看,当我编译并运行它后,第一个模板打印出了100,正如我所预料的,嗯,因为它实例化了那个c 的特化。我期望第二个模板打印出10,因为我认为用10和那个缺省参数10相匹配,但它也打印出了100。” 我研究着代码。鲍勃呷了一口咖啡。 “那好,”我咳了一下来打破沉寂,“我的第一个反应就是我期望这两个模板都打印出10。” “你知道,那是我告诉那个三八的,哦,我是说我首先想到的。”啊,这更像我所知道的那个鲍勃他会用一个下流的名字来称呼Guru。 “我设法把缺省参数想为懒惰的捷径,”我继续道,“每当我利用缺省参数来东西的时候,我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 名家对话_21_模板特化 缺省参数和其他一些有趣的事情 名家 对话 _21_ 模板 特化 缺省 参数 其他 一些 有趣 事情
限制150内