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