這就是問題所在。是否像C++中的C#參數?
回答
對於非託管C++使用相同的方便的語法,沒有。
但對於variable argument lists支持在C++函數。
基本上你聲明瞭一個函數,最後一個參數是一個省略號(...),並且在函數體內使用va_start()/ va_arg()調用來解析出提供的參數列表。
這種機制不是類型安全的,並且調用者可以傳遞任何東西,所以你應該清楚地記錄功能的公共接口,你希望在傳遞什麼。
對於託管C++代碼,看到裏德的評論。
是的。在標準C++中,可以使用va_arg和...語法。請參閱MSDN for details。
對於C++/CLI,這位的快捷方式。
你這樣做的:
void TheMethod(String^ firstArgument, ... array<Object^>^ variableArgs);
很高興知道這個問題......不知道C++有這個擴展託管代碼。 – LBushkin 2009-07-20 20:12:15
@LBushkin:更新爲更好的語法。 – 2009-07-20 20:13:44
有升壓一個named parameters庫(如果我理解C#正確什麼是PARAMS)。它允許寫這樣的功能:
int y = lib::f(_name = "bob", _index = 2);
不能告訴任何關於是否涉及重大開銷。
如今,隨着現代C++中,可以使用可變參數功能的現代類型安全的做法。
要麼使用可變參數模板或std :: initializer_list如果所有的參數具有相同類型的
隨着可變參數模板,您可以使用遞歸經過一個可變參數的參數列表。可變參數模板例如:
template<class T>
void MyFoo(T arg)
{
DoSomething(arg);
}
template<class T, class... R>
void MyFoo(T arg, R... rest)
{
DoSomething(arg);
// If "rest" only has one argument, it will call the above function
// Otherwise, it will call this function again, with the first argument
// from "rest" becoming "arg"
MyFoo(rest...);
}
int main()
{
MyFoo(2, 5.f, 'a');
}
這保證如果DoSomething的,或任何其他代碼,然後遞歸調用MyFoo運行之前,已經爲你傳遞給函數MyFoo每個參數的類型的過載,即確切的超載現象打電話。
性病:: initializer_list,您可以使用一個簡單的foreach循環都要經過論證
template<class T>
void MyFoo(std::initializer_list<T> args)
{
for(auto&& arg : args)
{
DoSomething(arg);
}
}
int main()
{
MyFoo({2, 4, 5, 8, 1, 0}); // All the arguments have to have the same type
}
- 1. C#是否支持inout參數?
- 2. 在C#中,是否事件處理函數參數是逆變?
- 3. 如何檢查參數是否傳遞給C中的函數?
- 4. 參數包中的參數計數?是否有一個C++ 0x std lib函數?
- 5. Java onCreate參數像initWithParameter C++
- 6. 在C++中,你有像c#中的「out參數」嗎?
- 7. 是否可以從C#中的參數值中檢索參數名稱?
- 8. 函數參數類型是否必須與C++中的參數類型相同?
- 9. C#中的參數
- 10. C/C++中的單個參數(函數)中的多個參數
- 11. C++:將像unique_ptr :: get()這樣的參數傳遞給函數是否安全
- 12. C/C++函數的參數
- 13. Python中是否有函數作爲主要參數C
- 14. C中的數組參數C
- 15. 是否可以迭代C#中的方法參數?
- 16. 您是否需要在Objective-C中釋放方法的參數?
- 17. C#4中的可選參數是否向後兼容?
- 18. C中的字符串參數是否動態分配?
- 19. 是否可以在C#中調用泛型參數的方法?
- 20. 是否優化使用C++ 11中的可變參數模板?
- 21. 什麼是C++中的「查詢參數」?
- 22. 什麼是OpenCV C++中的createBackgroundSubtractorKNN參數?
- 23. 方法參數是C#中的BSTR *
- 24. 給定的文件參數是否是一個目錄。 C
- 25. C中的函數參數是否總是具有相同的內存地址?
- 26. 是否有像OSX的dev C++程序
- 27. C是否有更多的宏像NULL?
- 28. 是否有像c#的python裝飾器?
- 29. 檢查模板參數是否爲參考[C++ 03]
- 30. C#是否支持可變數量的參數,以及如何?
能否請您介紹一下C++你的男人用什麼「C#PARAMS」的程序員? – 2009-07-20 21:20:12
@ JohannesSchaub - litb它的[PARAMS](https://msdn.microsoft.com/en-us/library/w5zay9db.aspx)關鍵字 – jxramos 2016-04-28 02:30:58