1
這是一個相當簡單的問題,讓我有點好奇。考慮下面的代碼片段:函數和函數指針之間的區別作爲參數
#include <iostream>
int three()
{
return 3;
}
void foo(int func(void))
{
std::cout << func() << std::endl;
}
void bar(int (*func)(void))
{
std::cout << func() << std::endl;
}
int main()
{
foo(three);
bar(three);
return 0;
}
// output:
// 3
// 3
正如你所看到的,我們有兩個函數將另一個函數作爲它們唯一的參數。但是,它們的函數原型是不同的。主要有void foo(int func(void))
和void bar(int (*func)(void))
。乍一看,它看起來像foo
正在使用該函數本身,而bar
正在指向一個函數。
但是,它們都產生完全相同的結果,並且具有完全相同的主體,並且以完全相同的方式調用。
我的問題是,在foo
和bar
之間是否存在實際隱藏的區別?這只是C++中的可選語法嗎?在C++中,兩種情況之一被認爲是「不良風格」嗎?
如果我的編譯器是一個因素,我使用Visual Studio 2010中
它與[tag:visual-studio-2010]無關。 – overcoder
@overcoder:刪除標籤。 :) – Zeenobit