你能解释一下为什么这不会编译吗:
(这是错误:
../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;
}
在第二种情况下,您正在调用构造函数。