在很多C++ API(基於COM的語言)中,使成爲某種東西,指向構造對象的指針通常需要作爲**
指針(該函數將建立和初始化它你)用於構建對象的C++語言的成語
大家平時看到的簽名一樣:
HRESULT createAnObject(int howbig, Object **objectYouWantMeToInitialize) ;
- 但你很少看到新的對象作爲返回值傳遞。
除了想要查看錯誤代碼的人,這是什麼原因?它是更好地使用**
模式,而不是簡單的操作,如返回的指針:
wchar_t* getUnicode(const char* src) ;
還是會這更好的可以寫爲:
void getUnicode(const char* src, wchar_t** dst) ;
我能想到的最重要的事情是記住要釋放它,而**
出於某種原因,往往會提醒我,我也必須釋放它。
對我來說看起來像C。在C++中,它們只是將其作爲參考傳遞或拋出異常。 – 2010-06-08 22:35:47
爲什麼這麼多的答案注重COM ..?這僅僅是它使用的一個例子 - 它也用在許多其他C-API中,例如FMOD。 – bobobobo 2010-06-09 00:31:30