件名の通り、ドット演算子とアロー演算子の使い分け方がわかりません。
アローはnewしてdeleteすることで解放できるというくらいの違いは分かるのですが、それくらいしかわかりません。(まさかそれしか違いがない…?)
調べてもそれぞれの使い方ばかり出てきてそれ以上のことがわからない状態です。
ドット演算子とアロー演算子
Re: ドット演算子とアロー演算子
C言語やC++の話で、オーバーロードはされていないと仮定すると、
ドット演算子は構造体やクラスに対してhoge.fugaのように使い、メンバにアクセスします。
アロー演算子は構造体やクラスを指すポインタに対してphoge->fugaのように使い、メンバにアクセスします。
phoge->fugaと(*phoge).fugaは同じ意味です。
ドット演算子は構造体やクラスに対してhoge.fugaのように使い、メンバにアクセスします。
アロー演算子は構造体やクラスを指すポインタに対してphoge->fugaのように使い、メンバにアクセスします。
phoge->fugaと(*phoge).fugaは同じ意味です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ドット演算子とアロー演算子
ポインタを指した場合何か良いのでしょうか?
軽くなったりでしょうか?
また、この場合はアロー演算子で、この場合はどっと演算子でやると良い。などわかりやすい例えってあげられませんか><;
軽くなったりでしょうか?
また、この場合はアロー演算子で、この場合はどっと演算子でやると良い。などわかりやすい例えってあげられませんか><;
Re: ドット演算子とアロー演算子
. と -> は直接置き換えられる物ではありません。 という型があった場合に,マダガスカル さんが書きました:また、この場合はアロー演算子で、この場合はどっと演算子でやると良い。などわかりやすい例えってあげられませんか><;
- と宣言された変数objのメンバーmemberにアクセスしたい場合は . を使う。
- と宣言された変数ptrのメンバーmemberにアクセスしたい場合は -> を使う。
オフトピック
C++における非常に特殊な例を除きます。
つまり,operator ->を定義していて,定義した型を->が返す(ポインタ)型の元となる型の両方に同じ名前のメンバーがある場合。
つまり,operator ->を定義していて,定義した型を->が返す(ポインタ)型の元となる型の両方に同じ名前のメンバーがある場合。
Re: ドット演算子とアロー演算子
ポインタを指すのではありません。マダガスカル さんが書きました:ポインタを指した場合何か良いのでしょうか?
ポインタが実体を指します。
「構造体へのポインタ」は「構造体の実体」を指します。
「構造体のメンバ」の参照方法に次の 2通りあるということです。
- 「構造体の実体」.「構造体のメンバ」
- 「構造体へのポインタ」->「構造体のメンバ」
一つの実体をコピーなしに参照でき、
メンバの変更もできて、値を返すことができます。
ポインタを使わずに、実体を関数の引数にすると、大量の
データコピーが発生し、関数内でコピーのメンバを変更しても
関数の呼出し元の実体のメンバにはそれが反映されません。
「アロー」が解放できるのではありません。マダガスカル さんが書きました: アローはnewしてdeleteすることで解放できるというくらいの違いは分かるのですが、それくらいしかわかりません。(まさかそれしか違いがない…?)
new で実体を確保して、その実態へのポインタを取得し、
その実体へのポインタを delete することによって
実体が解放できるのです。
Re: ドット演算子とアロー演算子
以前に単純にドットとアローでの書き方だけを変えたときにコンパイルが通ったので質問させていただきました。
ですが、今試したところ教えてくださったとおりちゃんとエラーがでました。
以前のファイルは消してしまったようで、再現も原因の究明もできませんがそれは別のところでの問題だったのだと思います。
また同じところで疑問を持ったら今度はコードも併せて質問させていただきます。
ありがとうございました。
ですが、今試したところ教えてくださったとおりちゃんとエラーがでました。
以前のファイルは消してしまったようで、再現も原因の究明もできませんがそれは別のところでの問題だったのだと思います。
また同じところで疑問を持ったら今度はコードも併せて質問させていただきます。
ありがとうございました。