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