1. ホーム
  2. c++

[解決済み] メンバ関数の末尾にあるconstの意味を教えてください。重複

2023-06-05 19:10:50

質問

は具体的にどのようなものなのでしょうか? const というキーワードがメンバ関数の最後(引数リストの後)に書かれているのは、一体どういう意味なのでしょうか?

どのように解決するのですか?

それは *thisconst の内部で、つまりオブジェクトを変更することなく、そのメンバ関数を実行します。

キーワード this はprvalue式で、その値は関数が呼び出されるオブジェクトのアドレスです。の型は this の型は、クラスのメンバ関数で XX* . メンバ関数が宣言されている場合 const と宣言されている場合、その型は thisconst X* . [9.3.2項§1] となります。

において const メンバ関数では、関数が呼び出されたオブジェクトは const アクセスパスを通してアクセスされます。 const メンバ関数は,オブジェクト及びその非静的データメンバを変更してはならない。[セクション 9.3.2 §2]。

これは const のメンバー関数は const のインスタンスに対して呼び出すことができます。非 const のメンバー関数を呼び出すことはできません。 [1] a const オブジェクトを変更しようとする可能性があるためです。

[1] 注意:テンポラリーは const オブジェクトでない限り const 型でなければなりません。