你能解释为什么这不会编译:
(这是错误:
../Man.cpp:33:9: error: conversion from ‘Man (*)()’ to non-scalar type ‘Man’ requested)
代码:
Man goo(){
Man m();
return m;
}
但这确实:
Man goo(){
return Man();
}
你能解释为什么这不会编译:
(这是错误:
../Man.cpp:33:9: error: conversion from ‘Man (*)()’ to non-scalar type ‘Man’ requested)
代码:
Man goo(){
Man m();
return m;
}
但这确实:
Man goo(){
return Man();
}
Man m();
这意味着“在程序的其他地方,我将定义一个名为的函数m
,它不接受任何参数并返回一个Man
”。是的,即使你把它写在另一个函数中。
Man m;
这意味着“m
是类型的变量Man
”。由于Man
是类类型,因此将调用默认构造函数,并且不需要括号。
您不希望在第一个示例中使用这些括号:
Man goo(){
Man m;
return m;
}
在第一种情况下,您不需要 ()。默认构造函数被隐式调用。
Man goo(){
Man m;
return m;
}
在第二种情况下,您正在调用构造函数。