クラス内のデータメンバーはconstにすることができますが、静的な場合に限ります。それ以外の場合は、クラス内の定数を初期化するコンストラクターが必要です。
can we declare a const data member inside a class? //this was an interview question
できるように思えますが、プログラマーがクラス内で定数を宣言するのは適切です。
説明/理由を教えてください、なぜ私たちができるかできないか?
クラス内のデータメンバーはconstにすることができますが、静的な場合に限ります。それ以外の場合は、クラス内の定数を初期化するコンストラクターが必要です。
can we declare a const data member inside a class? //this was an interview question
できるように思えますが、プログラマーがクラス内で定数を宣言するのは適切です。
説明/理由を教えてください、なぜ私たちができるかできないか?
簡単な答え:クラス内に非静的const
メンバーを含めることができます。
それでも値を割り当てる必要があるため、許可される場所は初期化リスト内のみです。
そして、まあ、あなたのメンバーが本当に一定しているなら、それは常にそれをする良い理由です。つまり、const-correctnessは主に、コーディングを改善するためのオプションのツールです。必要に応じて使用してください。後で感謝します。そして、あなたがそれを使わないのなら...まあそれは本当に問題ではありません!
もちろん、次のことができます。
struct A
{
A() : a(5)
{
}
const int a;
};
int main()
{
A a;
}
これは、構造体A内のデータメンバーaが変更されないことを意味します。
クラスで使用したい定数があり、クラスに属しているかどうかを確認してください。
たとえば、一意のIDを持つデータ型があるとします。IDは、そのために変更されないオブジェクトを識別します。
class myData {
cont int ID;
myData(int newID) : ID(newID) {}
}