1

次のような、意味的にも構文的にも正しいメソッドが与えられました。

const Foo & bar( const Bim & bam ) const;

3 つの const 呼び出しのそれぞれが何を意味するのかを説明することになっています。私は C++ が初めてで、その意味がわかりません。最後の const は、メソッドが const 変数に対してのみ呼び出され、変更を反映しないことを約束することを意味することを (大まかに) 理解しています。ただし、残りの2つはわかりません。私が最後のものに間違っていたら、私を修正してください。

4

3 に答える 3

4

説明については以下を参照してください

(1)const Foo & bar( (2)const Bim & bam ) (3)const;
  1. このメソッドは、不変の Foo 型の参照を返しています。
  2. タイプ Bim のメソッド パラメータは、メソッドによって変更されません。これは、const および非 const のオブジェクトをこのメソッドに渡すことができることを意味します。どちらの方法でも、メソッドはオブジェクトを変更しないか、const であるそのオブジェクトのメソッドしか呼び出すことができません。
  3. これは、このメソッドがオブジェクトを変更しないことを意味します。

PS: 3 については、あなたがやんちゃな男の子なら、これを回避する方法があります。

于 2013-02-12T06:02:29.557 に答える
0

-> int func1 () const; の場合 関数の最後に定数を指定すると、これはこの関数が読み取り専用であることを意味し、この関数が呼び出されたオブジェクトを変更することはできません。-> func (const bim) の場合; あなたが理解したように、関数の引数の定数は、その特定のオブジェクトを変更することを許可しません。-> const func2(); の場合 この関数の戻り値の型が定数であることを意味します。

于 2013-02-12T06:06:33.943 に答える
0

最後の const は、const 変数に対してのみメソッドを呼び出すことができ、変更を反映しないことを約束していることを (大まかに) 理解しています。

半分正しい。この関数は const または非 const オブジェクトで呼び出すことができ、オブジェクトの状態 (可変でないメンバー) を変更したり、非 const メンバー関数を呼び出したりしないことを約束します。const 以外のオブジェクトを呼び出すことは問題ありませんが、その逆は当てはまりません。つまり、後続の const がそこにない場合、const オブジェクトで呼び出すことができませんでした。

于 2013-02-12T06:01:51.630 に答える