如何在 C++ 中正确声明/分配变量的值

asd*_*gry 1 c++ variables declaration

在赋值之前,我应该在 C++ 程序的顶部声明变量吗:

int i;
std::string x;
std::string retval;

x = "foo";
i = 5;
retval = somefunction();
Run Code Online (Sandbox Code Playgroud)

或者,通过以下方式为变量赋值是否正确/可接受:

int i = 5;
std::string x = "foo";
std::string retval = somefunction();
Run Code Online (Sandbox Code Playgroud)

我是 C++ 的新手,我想知道 C++ 社区接受哪种方式。

rus*_*tyx 6

第二种方式是更惯用的 C++,应该是首选。另请参阅核心准则NR.1

原因

“所有声明在上”规则是旧编程语言的遗留问题,不允许在语句之后初始化变量和常量。这会导致更长的程序和更多由未初始化和错误初始化的变量引起的错误。

它也更有效,因为第一个是默认构造,然后是赋值,而第二个是简单的构造。