掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ポインタと参照の違いは? (ID:57932)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>・ポインタは代入や演算をすることができる 「ポインタそのものに対する演算」ってことですよね。 これがもっとも大きな違いです。 参照が指すインスタンスを指定できるのは初期化のときだけです。 なおかつ(ごく普通にプログラムを書く限りにおいて) 参照は必ず有効なインスタンスを指します。 ポインタそのものに対する演算を(不用意に)行うと、 ポインタが指す先が無効なインスタンスになることがあります。 int x=1, y=2; int& r1=x; int& r2=y; int* p1=&x; int* p2=&y; r1=r2; // x=y; と同じで r1 自身は x を指しつづける ++r1; // ++x; と同じで r1 自身は x を指しつづける p1=p2; // p1 が指す先は y に変わる ++p1; // p1 が指す先はもはや無意味 int* p=new int; delete p; *p=0; // ここでは p は有効なインスタンスを指さない 文法解釈上どうしても参照で無いと実現できない機能ってのがいくつかあります。 struct T { ... T& operator=(const T&); // ポインタでは実装不可能 }; そういうのを除けば、ポインタも参照も記述の違いだけにしか見えなかったりします。 (実際コンパイラも同一のコードを生成したりしますし) どちらがいい、というものではなくて、必要に応じて使い分けるものでしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.