- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++名家对话_21_模板特化,缺省参数和其他一些有趣的事情.txt“我羡慕内些老人 羡慕他们手牵手一直走到最后。━交话费的时候,才发现自己的话那么值钱。模板特化,缺省参数和其他一些有趣的事情
amature 翻译
--------------------------------------------------------------------------------
我们监视着不远处的大门,生怕从木卫二基地尾随而来的入侵者会跟进来。但看来他们很满足于让我们呆在里面,或至少等我们自己出来。大门那边依然静悄悄一片。
不管我们是多么警戒,大笨蛋们仍然占领了我们的许多岗哨。我们杀死了很多大笨蛋-有时是依靠我们的常规武器,有时是外星文物,最起码其中之一可以喷射出高能闪电使得在它周围想瞄准的任何东西都是非常危险的-但是大笨蛋们似乎是源源不断地产生的,怎么也杀不完。
因此兵变并不是我们唯一担心的东西。
--------------------------------------------------------------------------------
“嘿,伙计,事情进展得怎样了?听到鲍勃的声音,我有点紧张。然而令我吃惊的是-鲍勃没有摆出他那一贯的高人一等的姿态。他非常地....恕我直言...平易近人。
还不坏吧,鲍勃,我答了一声,同时也转过身来面对他,我们互相凝视了一会。
嗯,伙计,我想知道你是否愿意帮我一个忙。
我大吃一惊,哑然无语。这个鲍勃,是部门里最差的程序员,热衷于写晦涩的、难于维护的代码,偏偏却自命不凡,你在一个街区以外就能感受到他那股傲慢劲。他只有在把一大沓问题扔给我(同时把他的咖啡放在我的书桌上)时才造访我的蜗居,而现在,就这么一个人,竟然站在我的小屋里,请求我的帮助!
“啊哈,当然可以,鲍勃,”我最后回到道,“出了什么问题?”
鲍勃自己坐到了客椅上。OK,问题就在这里面。 我已经设法把它浓缩成这段源代码”,他拿过我的键盘并从我的工作站里打开了一个文件。我仔细地看着它:
#include iostream
templatetypename T, std::size_t size = 10
class c
{
T m[size];
public:
void print_size()
{
std::cout size std::endl;
}
};
template class cchar
{
char m[100];
public:
void print_size()
{
std::cout 100 std::endl;
}
};
int main()
{
cchar().print_size();
cchar, 10().print_size();
}
“首先,我不明白它怎能通过编译。我的意思是,我认为模板的参数必须是一个类或类型的名字,而不是一个普通参数。”
我问道:“你是指参数 size_t ?”鲍勃咕哝了一声,我知道他是同意我刚才的问题。“是的,当我第一次看到一个无类型参数的时候,我的大脑也停顿了一会。我习惯于看到 class 或 typename 声明而不是通常的参数。Guru肯定这是允许的,但她让我自己到标准里去查找。你只能使用整型或枚举型,对象或函数的指针或引用,或者是指向成员的指针 [1] 。实际上,对于整数类型,参数变成了一个整型常量表达式...”
“~!@#$%^*?”鲍勃打断了我。
“一个编译时常量,”我将他的嚎叫翻译成人话。“总之,由于它是整数-哦,也就是说由于它是编译时常量,就允许你用 size 来声明对象 T 的数组。相当灵活。”
“自从我学会了这一点,我经常玩弄这样一个念头:使用一个模板来提供一种更加灵活的 switch 语句,就像,”我打开了一个新的文件,键入下列文字:
templateint value1, int value2, int value3
void f(int currentValue)
{
switch(currentValue)
{
case value1:
...
case value2:
...
case value3:
...
}
}
void g()
{
f1, 2, 3(1); // 执行 value1 情形
f2, 3, 1(1); // 执行 value3 情形
}
“我不能拿出一个使用它的实际程序,所以我把它归入‘相当不错,但尚未实际应用’这一类。”
“除了其它一些无用的信息,在集会上还提出了一些东西,毫无疑问,”鲍勃打断了我,扫了一
您可能关注的文档
最近下载
- 沪科版初中物理九上单元作业设计 (优质案例54页) .pdf
- 中考物理一轮复习资料(沪科版).pdf VIP
- 外研版(2024)七年级上册Starter Welcome to junior high!Know your school课件.ppt
- 沪科版九年级上物理16章《电功和电功率》单元作业设计.pdf VIP
- 保定某大学科技产业楼工程施工组织设计_secret.doc
- 企业成本控制研究—以良品铺子为例.docx VIP
- 外研版(2024)七年级上册Starter Welcome to junior high!Get ready课件.pptx
- 肿瘤免疫治疗的原理及进展.pptx VIP
- 某小区楼工程施工组织设计范本.pdf VIP
- 汇川产品样本手册.pdf
文档评论(0)