2002/03/06 undo
前回のつづきで、今回もC++における「const」をとりあげます。
いきなりですが、次の「const」はどうでしょうか? 非常によく見かけるインタフェースだと思います。
void X::func1(const A & arg1);
Q4: これは何を書き換えないのでしょうか?
A4: arg1の指し示すAのインスタンスを書き換えないのです。
Q5: では、何のため、誰のためにわざわざ書き換えないと宣言しているのでしょうか?
A5: A2と同様ですね。X::func1()の呼び出し元が引数を書き換えられないことと同時に、X::func1()自身も実行中にarg1の内容が変化しないことを約束するわけです。
ここまでは、前回のおさらいみたいなもんです(^_^)
さて、次の例はどうでしょうか? これも非常に多く見かけるインタフェースだと思います。
bool X::func2() const;
Q6: これは何を書き換えないのでしょうか?
A6: C++シンタックスのおさらいみたいな問いですけど、これはこのメンバ関数を呼び出したXのインスタンスを書き換えないのです。Xのインスタンスを検査するメンバ関数などに利用されるインタフェースです。つまり、破壊読み出しはしないと宣言しているわけです。
たとえば、集合(Set)が空(empty)かどうかを検査する場合、次のような検査関数を用意しますね。
bool Set::IsEmpty() const;
おさらいだけで終わってしまって心苦しいのですが(^^;)、キリがいいので、今回はここらで終わりにします。次回もこのつづきです。