尽可能延后变量定义的出现时间
如果你定义了一个对象,那么在定义的时候就会调用改造函数,离开作用域的时候就会执行析构函数。即使这个对象没有被使用,仍然在离开作用域的时候要执行析构函数。
一、非循环:
如上述代码,如果在if语句中出现异常,那么之后的代码就不会执行了,而前面定义了变量 string encrypted;所以抛出异常后这个变量就没有被使用过,但是却执行了构造函数和析构函数,白白增加程序运行的成本。所以我们需要延后定义,如下:
这段代码虽然达到了需要的要求,没有提前定义变量。但是依然有改进的地方,比如,它执行了默认构造函数。因为调用默认构造函数后然后再赋值,比直接调用构造函数时指定值效率差。
所以继续改进如下:
二、循环中:
这就是哪个不耗费资源就选哪个的问题,如果执行构造函数和析构函数的成本大于赋值操作,那么久选择A,反之选B,如果两个相当建议选择B,因为A 的作用域大,对容易对程序的理解和维护造成冲突。