在很多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