最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。
【 tulaoshi.com - 编程语言 】
// this function defines the variable "encrypted" too soon
std::string encryptPassword(const std::string& password)
{
using namespace std;
string encrypted;
if (password.length() MinimumPasswordLength) {
throw logic_error("Password is too short");
}
... // do whatever is necessary to place an
// encrypted version of password in encrypted
return encrypted;
}
// this function postpones encrypted’s definition until it’s truly necessary
std::string encryptPassword(const std::string& password)
{
using namespace std;
if (password.length() MinimumPasswordLength) {
throw logic_error("Password is too short");
}
string encrypted;
... // do whatever is necessary to place an
// encrypted version of password in encrypted
return encrypted;
}
void encrypt(std::string& s); // encrypts s in place
// this function postpones encrypted’s definition until
// it’s necessary, but it’s still needlessly inefficient
std::string encryptPassword(const std::string& password)
{
... // check length as above
std::string encrypted; // default-construct encrypted
encrypted = password; // assign to encrypted
encrypt(encrypted);
return encrypted;
}
// finally, the best way to define and initialize encrypted
std::string encryptPassword(const std::string& password)
{
... // check length
std::string encrypted(password); // define and initialize
// via copy constructor
encrypt(encrypted);
return encrypted;
}
// Approach A: define outside loop // Approach B: define inside loop
Widget w;
for (int i = 0; i n; ++i){ for (int i = 0; i n; ++i) {
w = some value dependent on i; Widget w(some value dependent on i);
... ...
} }
来源:http://www.tulaoshi.com/n/20160219/1604250.html
看过《C++箴言:只要有可能就推迟变量定义》的人还看了以下文章 更多>>