读书人

模块有关问题

发布时间: 2012-02-09 18:22:27 作者: rapoo

模块问题
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加起。
[解决办法]
默认参数是个
默认构造函数创建的临时对象

读书人网 >C++

热点推荐