根据我个人的 cpp 经验,如果此类参数可以为 NULL,我学会了通过指针将对象传递给函数,如果参数永远不应该为 NULL/应该在传递之前实例化,则通过引用传递对象。那时我想知道,为什么在编写诸如
HANDLE WINAPI CreateFile(
_In_ LPCTSTR lpFileName,
...
);
或者
explicit basic_iostream(basic_streambuf<Elem, Tr> *_Strbuf);
微软选择将这些参数作为指针而不是引用,特别是因为函数在传递 NULL 值时会出错......
那么为什么每次将字符串(或其他类型)作为参数传递时,它都是作为指针(而不是引用)传递的?
我问这个是因为我还没有看到任何通过引用而不是指针传递字符串的实例,而且我觉得我缺少一些可验证的原因,我可以在我的代码中反映出来,为什么这样做方法。