-2

根据我个人的 cpp 经验,如果此类参数可以为 NULL,我学会了通过指针将对象传递给函数,如果参数永远不应该为 NULL/应该在传递之前实例化,则通过引用传递对象。那时我想知道,为什么在编写诸如

HANDLE WINAPI CreateFile(
  _In_      LPCTSTR lpFileName,
...
);

或者

explicit basic_iostream(basic_streambuf<Elem, Tr> *_Strbuf);

微软选择将这些参数作为指针而不是引用,特别是因为函数在传递 NULL 值时会出错......

那么为什么每次将字符串(或其他类型)作为参数传递时,它都是作为指针(而不是引用)传递的?

我问这个是因为我还没有看到任何通过引用而不是指针传递字符串的实例,而且我觉得我缺少一些可验证的原因,我可以在我的代码中反映出来,为什么这样做方法。

4

1 回答 1

4

您正在查看 Win32 API,而不是标准库。

Win32 使用指针而不是引用,因为它旨在独立于语言。为此,它使用 C(或类似的东西)作为“最小公分母”——而 C 没有引用类型,因此 API 也不使用它。

C++ 标准库确实使用了很多引用(例如,几乎所有与iostreams 一起工作的东西都通过引用传递它们)。

于 2013-07-14T05:19:09.697 回答