原来只是理解了这个的一部分,就是在使用前定义可以更明确的调用变量,不产生没有使用的变量,但是关于在循环中该如何处理这个问题一直没有考虑过,今天看了effectve c++才恍然大悟,先看:
假设C是个定义好的类
case1:
C ob;
while(i!=n) {
ob = 取决于i的某个值;
++i;
}
case2:
while(i!=n){
C ob(取决于i的某个值);
++i;
}
我们先来看两个case的代价
case1: C constructor * 1, assignment * n,C destructor * 1
case2: C constructor * n, C destructor * n
原来一直觉得应该用case1来解决循环中变量的定义,但是case1中的那个变量ob的作用域比case2可能大很多,所以在不是非常要求效率的系统上,而且确定赋值操作比构造操作的代价小的时候才使用case1。
又纠正了一个概念~~