首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模块有关问题

2012-02-09 
模块问题template classTTsum(T*b,T*e,TinitT()){while(b!e)init+*b++returninit}请问第三个参数怎

模块问题
template <class   T>
T   sum(T*   b,T*   e,   T   init=T())
{
while(b!=e)
init+=*b++;
return   init;
}

请问第三个参数怎么理解?小弟不懂啊~谢谢~

[解决办法]
换成int理解看看

int sum(int* b,int* e, int init=int())
{
while(b!=e)
init+=*b++;
return init;
}
[解决办法]
是一个T的对象,参数默认值由T()得到
T()是T的默认构造函数
[解决办法]
举例来说吧,假如你有两个int类型的指针:
int* p;
int* q;
那么你调用:
sum(p, q);
就等价于:
sum(p, q, int());
由于内建类型的值初始化是初始化成0值,于是也就等价于:
sum(p, q, 0);

当然,你也可以指定一个初值,比如:
sum(p, q, 100);
对这个函数而言,效果就是从100加起。
[解决办法]
默认参数是个
默认构造函数创建的临时对象

热点排行