在分配值之前,我应该在c ++程序的顶部声明变量吗?
int i = 5;
std::string x = "foo";
std::string retval = somefunction();
或者通过以下方式为变量分配值是否正确/可以接受:
{{1}}
我是c ++的新手,我想知道c ++社区接受哪种方式。
答案 0 :(得分:6)
第二种方法是C ++较为惯用的方法,应首选。 另请参见核心准则NR.1:
原因
“最上面的所有声明”规则是旧的编程语言的后遗症,不允许在语句后初始化变量和常量。这会导致程序更长,并且由于未初始化和错误初始化的变量而导致更多错误。
效率也更高,因为第一个是默认构造,然后是赋值,第二个是简单构造。
答案 1 :(得分:4)
如果事先知道初始值,第二种方法会更有效,因为您只调用一个构造函数,而在第一种方法中,您首先调用了默认构造函数,然后是赋值运算符。