経験から学んだ C++ 関連のイディオム、誤解、落とし穴は何ですか?
例:
class A
{
public:
char s[1024];
char *p;
A::A()
{
p = s;
}
void changeS() const
{
p[0] = 'a';
}
};
changeS が const メンバー関数であることを知っていても、オブジェクトの値を変更しています。したがって、const メンバー関数は、すべての変数を const として扱うことを意味するだけであり、実際にすべてのメンバーを const のままにするという意味ではありません。(なぜですか?メンバー関数の const キーワードは、char *p; を char * const p; として扱い、const char *p; としてではありません。
したがって、これは p が他の何かを指すことができないことを意味します。p のデータを変更できないわけではありません。