系列C++问题请教高手之四:STL for_each algorithm & copy construtor
昨天照Bjarne老兄的书写了一段代码如下,脑海中有一些问题:
1。sum1 = for_each(vi.begin(), vi.end(), sum1);这一个语句中sum1=调用了n_Sum& operator =(const n_Sum& sumclass),如果没有定义operator =,该程序也可以运行,那么是不是系统自动为类对像调用了一个赋值构造函数?--会自动给成员变量赋值?
2。code guru Scott Meyer告诉我们:prefer 传引用by 传值,那么在for_each(vi.begin(), vi.end(), sum1)这个语句中有没有办法,把sum1的引用传进去,而不是传sum1的对像--这样写:for_each(vi.begin(), vi.end(), &sum1);是运行不了的,有没有别的办法传引用?
template<class T> class n_Sum
{
T sum;
public:
n_Sum(T i=0):sum(i)
{
}
void operator()(T x)
{
sum += x;
}
n_Sum& operator =(const n_Sum& sumclass)
{
sum = sumclass.sum - 10;
return *this;
}
n_Sum(const n_Sum& S)
{
sum = S.sum -10;
}
T result() const
{
return sum;
}
};
int main()
{
int i;
vector<int> vi;
n_Sum<int> sum1;
for(i=1; i<=100; i++)
{
vi.push_back(i);
}
sum1 = for_each(vi.begin(), vi.end(), sum1);
cout<<"result:"<<sum1.result()<<endl;
return 0;
}