Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解c+中函数指针的困难+; 我正在阅读Bjarne Stroustrup的C++程序设计语言。它使用using关键字使函数指针数据类型P1和P2如下: using P1 = int(∗)(int∗); using P2 = void(∗)(void);_C++_Function Pointers - Fatal编程技术网

理解c+中函数指针的困难+; 我正在阅读Bjarne Stroustrup的C++程序设计语言。它使用using关键字使函数指针数据类型P1和P2如下: using P1 = int(∗)(int∗); using P2 = void(∗)(void);

理解c+中函数指针的困难+; 我正在阅读Bjarne Stroustrup的C++程序设计语言。它使用using关键字使函数指针数据类型P1和P2如下: using P1 = int(∗)(int∗); using P2 = void(∗)(void);,c++,function-pointers,C++,Function Pointers,但随后它使用using关键字生成另一个函数指针数据类型: using CFT = int(const void∗, const void∗); -(1) 然后,它使用CFT声明函数指针,并将其传递到某个ssort函数中: void ssort(void∗ base, siz e_t n, size_t sz, CFT cmp); 我的问题是,如果它使用“using”生成函数指针数据类型,那么第(1)行不应该是: 在C++和C++中,

但随后它使用using关键字生成另一个函数指针数据类型:

using CFT = int(const void∗, const void∗);             -(1)
然后,它使用CFT声明函数指针,并将其传递到某个ssort函数中:

void ssort(void∗ base, siz e_t n, size_t sz, CFT cmp);
我的问题是,如果它使用“using”生成函数指针数据类型,那么第(1)行不应该是:

在C++和C++中,<<代码>(*)<代码>是可选的。

是的,这令人困惑。关于函数指针类型,这是一个奇怪的现象


如果作者坚持使用两种可能的语法中的一种,情况会更好。

哪种版本?如果他们提到勘误表,你检查了吗?第四版。没有检查,我会检查。@Default:书中的勘误表在哪里?@Birbal:书中没有。如果他们在出版这本书时知道错误,他们就不会犯错误了。谷歌“C++编程语言第四版勘误表”。寻找一个标准的报价可能会有帮助,但实际上找不到。我认为这些类型是不同的,但最终使用的是相同的。它们不一样。似乎在函数参数的上下文中是相同的。所以我刚才说:)是的。这很令人困惑<如果
F
是一个函数类型,则code>void call(F F)和
void call2(F*F)
具有相同的签名。它确实是一个独特且不完整的函数类型。它有它的用途和奇怪之处。我个人喜欢使用原始的
CFT
来明确指针语义,即
CFT*
。更不用说能够将它与
std::function
一起使用,正如您已经提到的。
using CFT=int(*)(const void*, const void*);