Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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++ - Fatal编程技术网

C++ 在声明时显式调用无参数构造函数意味着什么

C++ 在声明时显式调用无参数构造函数意味着什么,c++,C++,这个问题听起来有点奇怪,但请检查代码示例 #包括 使用名称空间std; int main(){ 字符串a,b(),c(“测试”); //没问题 a=c; //tester.cpp:9:7:错误:函数“std::string b()的赋值” b=c; //tester.cpp:10:7:错误:从'std::string(*)({aka std::basic_string(*)()()}'到'char'的转换无效 a=b; //没问题 c=a; } 您可以看到,它看起来像是用默认构造函数创建的,但

这个问题听起来有点奇怪,但请检查代码示例

#包括
使用名称空间std;
int main(){
字符串a,b(),c(“测试”);
//没问题
a=c;
//tester.cpp:9:7:错误:函数“std::string b()的赋值”
b=c;
//tester.cpp:10:7:错误:从'std::string(*)({aka std::basic_string(*)()()}'到'char'的转换无效
a=b;
//没问题
c=a;
}

您可以看到,它看起来像是用默认构造函数创建的,但实际上不是。所以我的问题是,
stringb()
是什么意思?

将代码压缩为
stringb()
,您在这里要做的是向名为
b
的函数声明一个原型,该函数返回一个
字符串
,并且不带任何参数


“复合声明”中的逗号混淆了这一点。

将代码压缩为
字符串b()
,您在这里要做的是向名为
b
的函数声明一个原型,该函数返回一个
字符串
,并且不带任何参数


“复合声明”中的逗号混淆了这一点。

将代码压缩为
字符串b()
,您在这里要做的是向名为
b
的函数声明一个原型,该函数返回一个
字符串
,并且不带任何参数


“复合声明”中的逗号混淆了这一点。

将代码压缩为
字符串b()
,您在这里要做的是向名为
b
的函数声明一个原型,该函数返回一个
字符串
,并且不带任何参数



“复合声明”中的逗号混淆了这一点。

它实际上是一个函数声明。可以声明本地函数,但不能定义它们。因此,不可能显式调用默认构造函数。

它实际上是一个函数声明。可以声明本地函数,但不能定义它们。因此,不可能显式调用默认构造函数。

它实际上是一个函数声明。可以声明本地函数,但不能定义它们。因此,不可能显式调用默认构造函数。

它实际上是一个函数声明。可以声明本地函数,但不能定义它们。因此,无法显式调用默认构造函数。

经典错误,但错误消息已经指出:
函数std::string b()
/。

经典错误,但错误消息已经指出:
函数std::string b()
/。

经典错误,但是错误消息已经指出:
函数std::string b()
/。

经典错误,但是错误消息已经指出:
函数std::string b()
/。

称它为“逗号运算符”本身不是有点误导吗?这是一个由逗号分隔的声明符列表,逗号运算符是另一个野兽;遵循C++语法。@ Bathsheba:运算符出现在表达式中,而不是在声明器列表中。这确实是一个声明器列表<代码>整数i=1,2无法编译,此处的逗号不是运算符。确定。我明白你的意思。我已经修正了。称它为“逗号运算符”本身不是有点误导吗?这是一个由逗号分隔的声明符列表,逗号运算符是另一个野兽;遵循C++语法。@ Bathsheba:运算符出现在表达式中,而不是在声明器列表中。这确实是一个声明器列表<代码>整数i=1,2无法编译,此处的逗号不是运算符。确定。我明白你的意思。我已经修正了。称它为“逗号运算符”本身不是有点误导吗?这是一个由逗号分隔的声明符列表,逗号运算符是另一个野兽;遵循C++语法。@ Bathsheba:运算符出现在表达式中,而不是在声明器列表中。这确实是一个声明器列表<代码>整数i=1,2无法编译,此处的逗号不是运算符。确定。我明白你的意思。我已经修正了。称它为“逗号运算符”本身不是有点误导吗?这是一个由逗号分隔的声明符列表,逗号运算符是另一个野兽;遵循C++语法。@ Bathsheba:运算符出现在表达式中,而不是在声明器列表中。这确实是一个声明器列表<代码>整数i=1,2无法编译,此处的逗号不是运算符。确定。我明白你的意思。我修正了。事实上几乎是一个傻瓜,但我认为值得回答,因为逗号添加到近战中。事实上几乎是傻瓜,但我认为值得回答,因为逗号添加到近战中。事实上几乎是傻瓜,但我认为值得回答,因为逗号添加到近战中。事实上几乎是傻瓜,但我认为值得回答,因为逗号添加到近战中。