Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c++; 我应该在赋值之前声明变量在C++程序的顶部: int i; std::string x; std::string retval; x = "foo"; i = 5; retval = somefunction();_C++_Variables_Declaration - Fatal编程技术网

如何在c++; 我应该在赋值之前声明变量在C++程序的顶部: int i; std::string x; std::string retval; x = "foo"; i = 5; retval = somefunction();

如何在c++; 我应该在赋值之前声明变量在C++程序的顶部: int i; std::string x; std::string retval; x = "foo"; i = 5; retval = somefunction();,c++,variables,declaration,C++,Variables,Declaration,或者,通过以下方式为变量赋值是否正确/可接受: int i = 5; std::string x = "foo"; std::string retval = somefunction(); 我是C++的新手,我想知道C++社区接受了哪种方式。< p>当你知道初始值时,第二种方法更有效,因为你只调用构造函数,而在第一个你先调用默认构造函数,然后赋值运算符。 当你知道初始值时,第二种方法更有效,因为您只调用构造函数,而在第一次调用默认构造函数,然后赋值运算符。第二种方式更习惯于C++,应该是首选。

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

int i = 5;
std::string x = "foo";
std::string retval = somefunction();

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

< p>当你知道初始值时,第二种方法更有效,因为你只调用构造函数,而在第一个你先调用默认构造函数,然后赋值运算符。

当你知道初始值时,第二种方法更有效,因为您只调用构造函数,而在第一次调用默认构造函数,然后赋值运算符。

第二种方式更习惯于C++,应该是首选。 另见核心准则:

原因

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


它更有效,因为第一个是默认构造,其次是赋值,第二个是简单构造。

第二种方式是更习惯性C++,应该是首选。 另见核心准则:

原因

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


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

两者都可以工作。后者是更好的样式,因为一眼就能看出变量已初始化。两者都可以,但第二种可能更好,因为它保证每个变量中都有一个值,并避免读取未初始化的变量。它们不是等价的操作。一个是初始化,另一个是赋值。每种方法的用例都是显而易见的。在变量声明时已知初始值时,通过构造(第二个代码段)使用初始化;如果不是这样,请使用赋值(第一个代码段)。这是很严重的问题。你的问题是C++,根本不是C。没有比C/C++更好的东西了,答案真的很好。我建议您检查一下“C++中的三个规则”,因为您是新手。这样你就能更好地理解。两者都会起作用。后者是更好的样式,因为一眼就能看出变量已初始化。两者都可以,但第二种可能更好,因为它保证每个变量中都有一个值,并避免读取未初始化的变量。它们不是等价的操作。一个是初始化,另一个是赋值。每种方法的用例都是显而易见的。在变量声明时已知初始值时,通过构造(第二个代码段)使用初始化;如果不是这样,请使用赋值(第一个代码段)。这是很严重的问题。你的问题是C++,根本不是C。没有比C/C++更好的东西了,答案真的很好。我建议您检查一下“C++中的三个规则”,因为您是新手。这样你才能更好地理解。