gpt4 book ai didi

c++ - void(int) 和 void(*)(int) 有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:12 24 4
gpt4 key购买 nike

<分区>

我知道 void(*)(int) 是一个函数指针。但我真的对 void(int) 感到困惑。首先,它们是不同的类型

using A = void(int);
using B = void(*)(int);
is_same<A*, B>::value == true

我可以使用函数指针而不是 A 来初始化 B 类型的变量

void func(int x){
cout<<x<<endl;
}
B b { func }; //ok
A a { func }; //error
A* ap { func }; //ok

但是如果用作函数参数类型,它们似乎是可以交换的

void callA(A a, int arg){ a(arg); }
void callB(B b, int arg){ b(arg); }
callA(func, 1); //ok
callB(func, 1); //ok

那么 void(int) 到底是什么?什么时候应该使用 void(int) 什么时候应该使用 void(*)(int)?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com