今日、誰かが私にこの質問をしてください。C++ での参照の必要性とは何か、なぜ C++ でBjarne Stroustrup
考えたのかreference
。
2 に答える
Stroustrup の説明は次のとおりです。 http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references
C++ は C からポインターを継承しているため、深刻な互換性の問題を引き起こさずにそれらを削除することはできませんでした。参照はいくつかのことに役立ちますが、参照を C++ に導入した直接の理由は、演算子のオーバーロードをサポートすることでした。
例を次に示します。
void f1(const complex* x, const complex* y) // without references
{
complex z = *x+*y; // ugly
// ...
}
void f2(const complex& x, const complex& y) // with references
{
complex z = x+y; // better
// ...
}
このような質問に対する答えを知りたい場合は、本人による「The Design and Evolution of C++」という本を読んでください。
http://www2.research.att.com/~bs/dne.html
または、彼が答えを詳しく説明しているこちらを参照してください。
http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references
引用するには:
C++ は C からポインターを継承しているため、深刻な互換性の問題を引き起こさずにそれらを削除することはできませんでした。参照はいくつかのことに役立ちますが、参照を C++ に導入した直接の理由は、演算子のオーバーロードをサポートすることでした。例えば:
void f1(const complex* x, const complex* y) // without references
{
complex z = *x+*y; // ugly
// ...
}
void f2(const complex& x, const complex& y) // with references
{
complex z = x+y; // better
// ...
}