《Effective C++》条款 26、尽可能延后变量的定义

变量定义原则

当我们定义了一个变量时,特别是当这个变量需要构造和析构时我们需要承担这个变量的析构和构造成本,因此,我们定义变量的原则是当我们要使用该变量是我们才定义它。

特别是抛出异常的程序中当我们定义变量时我们就需要考虑该异常是否一定会被用到,如下的程序:
在这里插入图片描述变量encrypted不一定会被用到,因为一旦发生异常,很有可能程序将会结束该函数的调用或者终止程序,所以正确的做法是将变量定义再异常抛出代码段的后面。如下的操作:
在这里插入图片描述

使用拷贝构造函数

我们定义变量有时我们需要将变量的值进行特定的初始化,如果用如下方式进行
在这里插入图片描述
对于变量encrypted而言,一种更合理的做法是直接调用string的拷贝构造函数,这样便不需要多进行一次默认构造。
在这里插入图片描述
但是对于循环中变量我们该怎么用能?
在这里插入图片描述
上述两种操作我们首先明确他们的overhand:
在这里插入图片描述
如果一个赋值的成本低于一次构造加一次析构,那么做法A是可行的,否则做好是选用做法B,为什么做法B的选择更好呢?
因为做法A变量的作用域将会渗透到更宽的作用域,对代码的维护和修改都可能造成冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值