函數或成員函數中默認參數的有效表達式的所有可能類型是什麼?默認函數參數的有效表達式
回答
任何在賦值給函數參數類型變量的上下文中都是正確的。
編輯
編譯過程中的默認參數在類型正確性等方面進行評估,但不計算和賦值發生,直到運行時。您可以指定尚未定義的類的構造函數作爲默認參數,並且沒關係,只要在函數使用點定義了類...實際計算/分配發生在函數調用期間,而不是在點函數聲明/定義。
實施例:
#include <iostream>
void foo(int a = std::rand())
{
std::cout << a << std::endl;
}
int main(void)
{
foo();
return(0);
}
1804289383
這是錯誤的。您可以將變量分配給只能在運行時確定的變量,但不能將它們用作默認參數。例如,你可以做'int a = std :: rand()',但是你不能'void Class :: foo(int a = std :: rand())'。 – 2012-02-15 01:52:52
@EmileCormier你錯了。 – lapk 2012-02-15 01:55:09
哎呀,對不起。我讓我的錯誤的先入爲主再次變得更好。 – 2012-02-15 01:57:14
這是在C++ 03標準的第8.3.6詳述。它基本上等於任何不依賴於局部範圍內的任何表達式,因此任何依賴於局部變量,函數參數或「this」的表達式都將被排除。
這非常讚賞AzzA的回答。我希望我能接受這兩個答案。 – 2012-02-15 02:11:44
- 1. 默認參數值表達式
- 2. plot()函數默認參數
- 3. Python:列表的默認參數表達式
- 4. enable_if添加一個具有默認參數的函數參數?
- 5. JS:函數的參數的默認值
- 6. 函數參數的正則表達式
- 7. 檢查函數的表達式參數
- 8. 帶參數的函數表達式
- 9. 如何傳遞表達式樹的默認參數?
- 10. 函數參數的默認值?
- 11. 使用默認參數的Python函數
- 12. VB6中函數參數的默認值
- 13. python函數的默認參數
- 14. T-SQL - 函數的默認參數
- 15. 在Scala中可以編寫放置在函數參數中的表達式,默認參數值嗎?
- 16. Lambda表達式作爲函數參數
- 17. Javascript參數:有許多默認參數
- 18. Python類構造函數默認參數
- 19. 默認和參數化構造函數
- 20. PHP函數參數默認值
- 21. 使用默認參數傳遞函數
- 22. 默認參數函數簽名更改
- 23. 函數默認參數和標題
- 24. 函數默認參數提升
- 25. 定義默認值,函數參數
- 26. 默認參數代表「做所有」
- 27. C++默認構造函數和默認參數
- 28. 參數沒有默認值
- 29. 默認參數
- 30. 默認參數
你需要更具體一些。 – 2012-02-15 01:45:38
我的問題是故意的一般。我想知道我可以使用哪些類型的表達式作爲默認參數。這不僅僅是要求幫助解決一個bug。 – 2012-02-15 01:48:41
http://msdn.microsoft.com/en-us/library/e1dbzf09.aspx – 2012-02-15 01:51:02