1

C++ には既にポインター型があり、それはすでに非常に強力ですが、参照型もあり、ほとんどの作業はポインターでも実行できます。参照型の利点は何ですか? C++ の作成者がこの型を追加したのはなぜですか?

4

3 に答える 3

2

答えは「コピーコンストラクター」です。

C++ は値ベースの言語です。と言うとき、が と同じ値を持つFoo x; Foo y = x;方法が必要です。これを行うには、コピー コンストラクターが必要です。コピー コンストラクターはオブジェクトを引数として取らなければなりませんが、それをコピーすることはできません。これがまさに定義しようとしている操作だからです。yxx

したがって、参照によって引数を取る必要があります。

(コピー コンストラクターを奇妙に動作させてアドレスを取ることもできますが、それは予期せぬことであり、特に C 言語からの進化を考えると、言語を混乱させることになります。新しい型機能は、はるかにクリーンで強力なソリューションです。)

于 2013-04-24T13:42:52.133 に答える
2

まず、オブジェクトを null にできないことを示します。

第二に、別の変数を指すように割り当てることはできません。

于 2013-04-24T13:41:50.557 に答える
0

参照は、彼の人生で 1 つのオブジェクトのみを参照しており、参照するオブジェクトが必要です (null にすることはできません)。

私の考えでは、C++ の作成者は (C# のような) 参照のみを使用することを目指していましたが、次の 2 つの理由からポインターの使用を許可する必要がありました。 Cとの互換性を取り戻します(CがコンパイルするすべてのものはC ++でコンパイルされます)

于 2013-04-24T13:42:58.873 に答える