teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

fix

2016/04/05 03:05

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  C++言語の`const`は**遷移的(transitive)でない**ためです。もう少し平易な表現だと「const性が参照やポインタを超えて伝搬しない」になります。
2
2
 
3
- constメンバ関数内部では`this`ポインタが暗黙にconst修飾されます(`const Base*`型)が、このポインタを経由して得られる`rr`や`pp`の型にはconst性が**伝搬しない**ため、非constな`int&`や`int*`のままになります。
3
+ constメンバ関数内部では`this`ポインタが暗黙にconst修飾されます(`const Base*`型)が、このポインタを経由して得られる`rr`や`pp`の型にはconst性が**伝搬しない**ため、参照先/ポイント先は非constな`int &`や`int * const`なります。ポインタ値`pp`はconst修飾されますが、さす先の値`*pp`は非constのままです。
4
4
 
5
5
  ```cpp
6
6
  void Base::operator()(int v) const {