定义变量(自定义变量)未使用,会承担构造成本和析构成本,考虑以下场景:
void encrypt(std::string& s) { //加密部分 }
int MinimumPasswordLength = 8;
std::string encryptPasssword(const std::string& password) {
// std::string encrypted; // 情况 1
if (password.length() < MinimumPasswordLength) {
throw logic_error("Password is too short");
}
// std::string encrypted; // 情况2
// encrypted = password;
std::string encrypted(password); // 情况3
encrypt(encrypted);
return encrypted;
}
考虑在循环内的场景:
class Widgt {};
void f() {
// 做法A
Widgt w;
for (int i = 0; i < n; i++) {
w = "取决于i的值";
}
// 做法B
for (int i = 0; i < n; i++) {
Widgt w("取决于i的值");
}
}