3

ここに初心者!

私はコードを読んでいて、作者がメンバー関数を次のように頻繁に書いているのを見ています

const int func (const scalar& a) const
// etc

ここに3つのconstがあることがわかります。これで、オブジェクトaを変更しないことを目的とした真ん中のconstscalar&aがわかりましたが、他の2つのconstはどうでしょうか。

何とかを変えずに保護するために、これを常に行うのは良い習慣ですか?

どうもありがとう!

4

2 に答える 2

7

投稿したコードは無効です。コンパイルされません。しかし、あなたが考えるなら

class MyClass {
  const int& func (const scalar& a) const {
    // ...
  }
};

1つ目constは、戻り値が一定(つまり不変)であることを指定します。2番目のconstconst scalar& a)は、関数が引数の値の値を変更しないことを指定しますa。3番目のconstは、それが定数メンバー関数であることを指定します。つまり、インスタンス自体funcを変更しません。MyClass

于 2012-05-29T22:48:36.853 に答える
0

まだ誰も言及していないので:違いはまったくありません

const int some_function();

int some_function();

onスカラーリターンタイプ(constなどint)は無視されます。それはクラスタイプにのみ重要です。関連している

于 2012-05-30T06:12:28.427 に答える