C++大师Herb Sutter建议我们几乎总是使用"auto".他在他的网站上说明了这一点,他最近在CppCon 2014大会上重申了这一点.
我试图听从他的建议而且我不相信.这里是否有人同意Sutter,谁可以告诉我原因
auto gender = string{};
auto number = string{};
auto person = string{};
Run Code Online (Sandbox Code Playgroud)
比...更好
string gender, number, person;
Run Code Online (Sandbox Code Playgroud)
这是我最终写在我的代码中,因为我无法忍受汽车风格.
编辑:
auto gender = string{}, number = string{}, person = string{};
Run Code Online (Sandbox Code Playgroud)
也是一种可能性,但在我看来,情况更糟.
auto 关键字主要用于使用值初始化变量的情况,因为这使得在更改初始化变量的值时代码更易于维护:
uint16_t id_ = 65535;
uint16_t id()
{
return id_;
}
auto myid = id();
Run Code Online (Sandbox Code Playgroud)
myid如果返回类型改变则不需要改变类型id()。
有了 C++14,它会变得更好:
uint16_t id_ = 65535;
decltype(auto) id()
{
return id_;
}
auto myid = id();
Run Code Online (Sandbox Code Playgroud)
更改 的类型id_会自动调整 的返回类型id()和 的类型myid。
如果变量的初始值未使用值进行初始化,并且因此不依赖于其他代码进行初始化,则显式定义变量类型是有意义的,因为 auto 关键字不会为代码添加更多可维护性,并且语法auto gender = string{};的可读性比string gender;.