函數或成員函數中默認參數的有效表達式的所有可能類型是什麼?默認函數參數的有效表達式
回答
任何在賦值給函數參數類型變量的上下文中都是正確的。
編輯
編譯過程中的默認參數在類型正確性等方面進行評估,但不計算和賦值發生,直到運行時。您可以指定尚未定義的類的構造函數作爲默認參數,並且沒關係,只要在函數使用點定義了類...實際計算/分配發生在函數調用期間,而不是在點函數聲明/定義。
實施例:
#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. 使用lambda表達式定義默認的函數參數
- 2. 默認參數值表達式
- 3. plot()函數默認參數
- 4. 錯誤:多態表達默認參數
- 5. Python:列表的默認參數表達式
- 6. enable_if添加一個具有默認參數的函數參數?
- 7. '無效使用void表達式'傳遞函數的參數
- 8. JS:函數的參數的默認值
- 9. 默認的構造函數的參數
- 10. 檢查函數的表達式參數
- 11. 函數參數的正則表達式
- 12. 帶參數的函數表達式
- 13. 查詢參數的默認表達式包含錯誤
- 14. 如何傳遞表達式樹的默認參數?
- 15. VB6中函數參數的默認值
- 16. PHP默認參數的函數調用
- 17. C++函數默認參數的位置
- 18. 虛函數中的默認參數C++
- 19. T-SQL - 函數的默認參數
- 20. 模板函數的默認參數
- 21. curried函數中的默認參數
- 22. python函數的默認參數
- 23. 函數參數的默認值?
- 24. 接受默認參數的C函數
- 25. 使用默認參數的Python函數
- 26. Linq表達式 - 無效的參數
- 27. 在Scala中可以編寫放置在函數參數中的表達式,默認參數值嗎?
- 28. 如何使用表達式作爲參數默認值?
- 29. 具有參數CTE表達式結果的表值函數
- 30. Lambda表達式作爲函數參數
你需要更具體一些。 – 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