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++中,我可以用多种方式创建和初始化变量: int x = 0; int x(0); int x = int(0); int x = int(); // same as zero_C++_Variables_Constructor_Initialization_Declaration - Fatal编程技术网

这些初始化类型之间有什么区别? 在C++中,我可以用多种方式创建和初始化变量: int x = 0; int x(0); int x = int(0); int x = int(); // same as zero

这些初始化类型之间有什么区别? 在C++中,我可以用多种方式创建和初始化变量: int x = 0; int x(0); int x = int(0); int x = int(); // same as zero,c++,variables,constructor,initialization,declaration,C++,Variables,Constructor,Initialization,Declaration,但是,例如,当声明像这样的非基本数据类型时,会出现某种错误 string s = ""; string s(""); string s = string(""); string s = string(); // gives an error 这些初始化类型之间有什么区别?为什么最后一种类型适用于int而不适用于string?它们在功能上是等效的。 这是一个很好的页面和细节 对于字符串,情况类似,不过在初始化过程中,您也会根据您给出的参数选择不同的构造函数。对于string s=string()

但是,例如,当声明像这样的非基本数据类型时,会出现某种错误

string s = "";
string s("");
string s = string("");
string s = string(); // gives an error

这些初始化类型之间有什么区别?为什么最后一种类型适用于int而不适用于string?

它们在功能上是等效的。 这是一个很好的页面和细节


对于字符串,情况类似,不过在初始化过程中,您也会根据您给出的参数选择不同的构造函数。

对于
string s=string(),您会得到什么错误代码行?最后一行是多余的。字符串s;将调用默认构造函数。这样做将调用operator=并调用默认构造函数semi related:。我在代码中看到的唯一错误是重用了
s
,我想您知道这一点。不过,请确保已删除同一作用域中的其他
s
s。不能建议进行足够的监视。我可以这样初始化
string s=string()没有错误,但当我写
cout@K2osha时,请尝试将
#include
添加到程序顶部
int x(0); // direct initialization

// These three are copy initialization with copy elision
int x = 0;
int x = int(0);
int x = int();

/// not initialization!!! declaration of function
int x();