这些初始化类型之间有什么区别? 在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();