今まで知らずにC++書いてた
ヒィー(((゚Д゚)))ガタガタ
constメンバ関数から、同じクラスのメンバであるポインタの指す先は変更できる。(英訳したくない)
つまり、
class A{
double* a;
public:
void func() const{
a[0] = 1.0;
}
};
これはエラーにならない。
class A{
double* a;
public:
void func(double* b) const{
a = b;
}
};
これはエラー。つまりdouble * const a
扱い。
std::vector
なら期待通りconst
class A{
std::vector<double> a;
public:
void func() const{
a[0] = 1.0;
}
};
はエラー。ちなみに
class A{
std::unique_ptr<double[]> a;
public:
void func() const{
a[0] = 1.0;
}
};
はエラーにならない。
つまりコンテナ使えってことですね、わかります。