回答
我可以在回調的上下文中想象的結構可能是有用的:
#include <iostream>
// Please assume the callback is an external library:
typedef void (*callback_function)(int);
callback_function callback;
void foo(int = 0) {
std::cout << "Hello\n";
}
int main() {
callback = foo;
callback(1);
foo();
}
謝謝。但爲什麼我沒有:'typedef void(* callback_function0)(); callback_function0 callback0; void foo0(){std :: cout <<「Hello \ n」; ''? – user2023370
@ user2023370假設回調是外部庫 –
它將作爲默認參數值。它屬於函數聲明。
如果代碼找不到值(因爲沒有名稱可以訪問它),那麼默認值就沒用了,不幸的是,在_does_ compile問題中的代碼行。 – mah
@Tyler:從什麼時候禁用定義中的未命名參數?我經常使用它們來避免*未使用的變量* - 警告。 – Deduplicator
的聲明沒有必要參數的名字。但是,定義確實如此。另外,定義中不能重複默認參數。下面是工作的一個小程序(但我不知道你爲什麼會想要做這樣的事情,真是......):
#include <iostream>
void foo(int = 5);
int main() {
foo();
foo(3);
return 0;
}
void foo(int i) {
std::cout << i << std::endl;
}
輸出是
5
3
- 1. C++如何聲明一個臨時未命名的,未初始化的數組?
- 2. C# - 爲什麼我需要初始化一個[out]參數
- 3. 像類一樣命名可調參數有什麼意義?
- 4. 初始化(C)時0.0f的意義是什麼?
- 5. 未定義參考`的std ::的ios_base ::初始化::初始化()」
- 6. 什麼時候匿名命名空間數據被初始化?
- 7. 初始化NSArray時nil有什麼意義?
- 8. oracle「初始化參數」和「會話參數」有什麼區別?
- 9. 命名錶單有什麼意義?
- 10. 初始化未定義的命名空間
- 11. java:有什麼辦法避免寫命名類? (變量尚未初始化)
- 12. 函數調用參數是一個未初始化的值?
- 13. C++:初始化列表/命名約定
- 14. 這個函數的初始化語法是什麼意思?
- 15. 「值初始化」是什麼意思?
- 16. 這個類變量的初始化在Ruby中有什麼意義
- 17. 未初始化的常量是什麼意思?
- 18. 傳遞一個未初始化的數組的函數用C
- 19. 有什麼辦法讓C#不會抱怨實際上未初始化的未初始化變量?
- 20. 爲什麼Matlab給我一個未初始化的變量?
- 21. 爲什麼int數組在C++中未初始化爲零?
- 22. 初始化參數時會發生什麼? C++
- 23. 「當前語句的至少一個參數未初始化」
- 24. 用數組或初始化初始化一個NSMutableArray初始化
- 25. C++爲什麼會出現意外的零初始化?
- 26. 如何初始化一個使用命名參數的HashTable對象?
- 27. 「變量可能未被初始化」是什麼意思?
- 28. 爲什麼在未初始化的數組中有一些奇怪的數字?
- 29. WL.Client.createChallengeHandler的參數有什麼意義?
- 30. 爲什麼iScroll未初始化?
有沒有價值做這是一個愚蠢的賭注,否則它將會或不會編譯(假設大多數人會拒絕相信這樣的無用構造會編譯)。 – mah
這裏真的沒有意義。你在哪裏看到它?如果編譯器不警告,我感到非常驚訝。 – lpapp
我現在在函數參數中使用'std :: enable_if'時看到了一個很好的例子。從[這裏](http://en.cppreference.com/w/cpp/types/enable_if):'template T foo2(T t,typename std :: enable_if :: value> ::鍵入* = 0){return t; }' –
user2023370