gpt4 book ai didi

c++ - 参数采用函数的两种语法样式?

转载 作者:行者123 更新时间:2023-11-30 00:51:27 25 4
gpt4 key购买 nike

我正在阅读 Alex Allain 关于函数指针的教程 (http://www.cprogramming.com/tutorial/function-pointers.html),他在其中描述了接收函数参数的语法:

void doSomething(int (*GetNumber)(Player p) = myFunct) {

}

然后我正在阅读 Accelerated C++,它显示了以下语法:

map<string, vector<int> >
xref(istream& in, vector<string> find_words(const string&) = split) {

}

这两种方法有区别吗?即,A 与 B:

答:

void doSomething(int (*GetNumber)(Player p) = myFunc) {

}

乙:

void doSomething(int GetNumber(Player p) = myFunc) {

}

最佳答案

没有区别,因为通过值作为参数传递的函数被隐式转换为指针。所以这两个声明

void doSomething(int (*GetNumber)(Player p) );

void doSomething(int GetNumber(Player p) );

声明相同的函数。

你也可以把声明写成

void doSomething(int (*)(Player) );

void doSomething(int( Player ) );

等价于下面的声明

void f( int a[] );

void f( int *a );

void f( int a[10] );

甚至

void f( int a[100] );

它们都声明了相同的功能。

关于c++ - 参数采用函数的两种语法样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21842393/

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