10

私は読んC++ Primerでいて、次のような声明があることに気づきました:

参照はオブジェクトではないため、アドレスを持ちません。したがって、参照へのポインターを定義することはできません。

しかし、サンプル コードを書いて、参照 (d変数) へのポインターを作成できることを示しました。

コードは以下に掲載されています。

#include <iostream>
using namespace std;

int main(){
   int a = 1024;

   int &b = a; // a reference to int
   int &c = b; // a reference to another reference
   int *d = &b; // a pointer to a reference
   int *(&e) = d; // a reference to a pointer 

   a = 100;
   cout << b << endl;
   cout << c << endl;
   cout << *d << endl;
   cout << *e << endl;
}

それで、私のテストに何か問題がありますか?それとも中の記述C++ Primerが間違っていますか?

私はC++ Primer第五版を読んでいます。声明は52ページ、2.3.2にあります。

4

4 に答える 4

0

参照は、元のオブジェクトへのエイリアスと考えてください。参照はメモリを割り当てず、割り当てを解除します。指摘されているように、エイリアス名で参照されるオブジェクトを指すことはできますが、メモリにはエイリアス自体を表すものは何もありません (コード内のみです)。対照的に、ポインターはメモリを割り当て、値を格納します (値が NULL であっても)。

于 2013-06-13T22:08:13.833 に答える