Когда вы пишете конструктор, у вас есть возможность проверить значения аргументов вне диапазона или других нежелательных ситуаций в его теле.
class a
{
int b;
public:
a(int c)
{
if(c < MIN_ALLOWED || c > MAX_ALLOWED)
{
// Take some measure
}
else
{
b = c;
}
}
};
Но когда вы имеете дело с константными членами, они должны быть инициализированы с помощью списка инициализаторов, так что, в этом случае, как предотвратить нежелательные значения?
class a
{
const int b;
public:
a(int c) : b(c)
{
// How to control "c" value?!...
}
};