Zeb*_*ish 5 c++ pointers function void
我正在尝试理解C++函数指针语法.在我输入的Linux上的Eclipse中:
void(*);
Run Code Online (Sandbox Code Playgroud)
它突出显示了带有语法错误消息的语句,但它让我编译它并运行程序.然后在Visual Studio上我尝试了它并且它不会编译,说"预期表达式".然而,当我这样做时,奇怪的是:
std::vector<void(*)> myVector;
Run Code Online (Sandbox Code Playgroud)
它在Visual Studio上编译得很好.还有几个在线编译器void(*); 在它自己的工作正常.我知道:
void (*)();
Run Code Online (Sandbox Code Playgroud)
...是一个函数指针和..
void();
Run Code Online (Sandbox Code Playgroud)
...是一个函数签名,这就是为什么你可以这样做的原因:
std::function<void()> func;
Run Code Online (Sandbox Code Playgroud)
我在理解函数指针语法时遇到了很多麻烦.
谢谢.
Som*_*ude 12
请记住,括号可用于更改某些事物的优先级.这就是为什么你在星号周围有括号void (*)()
因为它与它非常不同void *()
.
在void(*)
括号的情况下是这样的优先级改变括号.但它们不是必需的.的类型void(*)
是void*
,简单明了.
您使用它的上下文非常重要.