2012-04-05 7 views
0

誰かがこの質問を今日私に聞いています。 C++での参照の必要性は何ですか、なぜBjarne StroustrupはC++でreferenceと考えましたか?C++のリファレンスの必要性

+4

はどのような答えの有用性の尺度の「シンタックスシュガー」料金は?その機能のもう一つの名前は "ポインタのuggifier"でした。 – dasblinkenlight

+1

値とポインタにアクセスするための統一構文を持つこと。最も重要な機能の参照は、それらを含む演算子に過負荷をかける能力です。 – enobayram

+0

文法はオフです。あなたが何を意味するのかを正確に伝えるのは難しいです。あなたは、値渡しやポインタ渡しとは対照的に、引数を引数として渡すことを指していますか? – DevNull

答えて

5

は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 
    // ... 
} 
+0

'complex a、b;を忘れないでください。 f1(&a、&b); f2(a、b); '関数を呼び出すことはずっと激しくなりません。 – chris

1

あなたは人間自身が、「C++の設計と進化」という本読んで、このような質問への答えを知りたい場合は:ここを参照してください、

また

http://www2.research.att.com/~bs/dne.html

を、彼はどこ詳細に答えを説明します

http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references

は引用すると:

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 
    // ... 
} 
関連する問題