-2

私の個人的な cpp の経験から、そのようなパラメーターが NULL になる可能性がある場合はポインターによってオブジェクトを関数に渡し、パラメーターが NULL であってはならない/渡される前にインスタンス化する必要がある場合は参照によって関数に渡すことを学びました。そのとき、なぜ次のような関数を書くときに疑問に思っていました

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

また

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

Microsoft は、このようなパラメーターを参照ではなくポインターとして使用することを選択しました。特に、NULL 値が渡されたときに関数がエラーになるためです...

では、文字列 (または他の型) がパラメータとして渡されるたびに、(参照ではなく) ポインタとして渡されるのはなぜですか?

ポインターではなく参照によって文字列を渡すインスタンスをまだ見ていないため、これを尋ねています。なぜこれが行われるのかについて、コードに反映できる検証可能な理由が欠けているように感じます。仕方。

4

1 に答える 1

4

標準ライブラリではなく、Win32 API を見ています。

Win32 は、言語に依存しないことを意図しているため、参照ではなくポインターを使用します。そのために、C (または類似のもの) を「最小公分母」として使用します。C には参照型がないため、API もそれを使用しません。

C++ 標準ライブラリはかなりの量の参照を使用します (たとえば、iostreams で動作するほとんどすべてのものは、参照によって渡します)。

于 2013-07-14T05:19:09.697 に答える