質問が多いです・・・・
C++のconst+その他について疑問が出てきてしまったため質問しようと思います。
現在下記のURLで示したサイトで勉強中です。http://www5c.biglobe.ne.jp/~ecb/cpp/04_19_02.html
:::質問1:::
上記のサイトで提示してあるプログラムについて質問をしていきますが、上のプログラムを全て理解しなくても大丈夫だと思います。質問内容は表記についてです。
プログラムではたくさんの代入演算子、比較演算子を自分で定義していますが、比較演算子についてクラス内部で定義してあるものと、外部関数をfriend登録してある関数とに分かれています。この差というのは起動オブジェクトがそれ自身のクラスから生成された場合はメンバ関数として定義し、起動オブジェクトが単なる変数などの場合外部関数として定義するという区別でいいのでしょうか?
:::質問2:::
質問1で紹介したたくさんの比較演算子を自分で定義してある部分についてですが例えば次のような場合です。
bool String::operator< (const char* p)const{
return strcmp( pStr, p ) < 0;
}
この場合のconstについて質問したいところがあります。boolの行の一番最後のconst・・・・
この意味はoperatorの前に書いてあるクラスのメンバ変数をこの関数の処理で変更しないという解釈でよいのでしょうか?
そしてreturn文についてです。 この関数がboolと定義されているところから想像はつきますが、 strcmp( pStr, p ) < 0 この結果が返されるということでいいんですよね?このような記述の仕方は初めてみましたが、例えば
if( strcmp( pStr, p ) < 0 )
return TRUE;
else
return FALSE;
と記述しても同じですよね?
:::質問3:::
キャスト演算子の部分で次のように記述してあります。
String::operator const char*()const{
return pStr;
}
恥ずかしながら、どのような処理になっているかさっぱりです。もし分かる方がいたら解説をお願いしたいです。
長く質問してしまって申し訳ないです。
全てといわずこのどれか1つでもいいので、答えることができる方はよろしくお願いします。