struct A{
A(){}
};
struct B{
B(const A& a){}
};
int main()
{
//Originally I would like to write down below code
A a;
B b(a);
//Unfortunately I end up with below code by accident and there is no compile error
//I have figured out the below does not create temporary A and call B constructor to
//create B as the above codes,
//it declares a function with return value B, name b,
//and some input parameter, my question is 1) what the input parameter is ?
//2) How to implement such a function.
B b(A()); // There is no global function A() in my test case.
}
问题在评论中,我希望有些人可以帮助我理解它。非常感谢你。
答案 0 :(得分:3)
它声明了一个名为b
的函数,它返回B
,它有一个类型为A (*)()
的参数,即指向函数的指针不带参数并返回A
。声明符A()
表示"函数不带参数并返回A
"但是无论何时声明参数具有函数类型,它都会被重写为指向功能。此声明中的参数未命名(如果您不想,则不必为参数指定名称)。
要实现这样的功能,您需要一个定义例如,
B b(A a()) {
// do something with "a"
// note: the type of "a" is still pointer to function
}
答案 1 :(得分:2)
B b(A())
声明一个名为b
的函数,它返回一个B
并将一个函数指针作为参数。函数指针指向一个返回A
并且不带参数的函数。