Предположим, у меня есть класс с переменной-членом, которую я не хочу менять.Есть ли разница между тем, чтобы сделать эту переменную приватной константой и просто сделать переменную приватной, предполагая, что нет функции setter?
Private:
class ConstFoo
{
public:
Foo(int a);
virtual ~Foo();
int val(){ return val_; }
private:
int val_;
}
Private Const:
class ConstFoo
{
public:
Foo(int a);
virtual ~Foo();
int val(){ return val_; }
private:
const int val_;
}
Кажется, что между ними нет разницы, поскольку вы не можете изменить значение val_
в любом случае, поэтому квалификатор const
кажется избыточным.
Одна из причин, по которой яМожно видеть, что добавление const
явно для ясности кода, поэтому люди, работающие над кодом в будущем, не добавят установщик в функцию.Тем не менее, с именем ConstFoo
и документацией, в которой конкретно указано, что оно не предназначено для изменчивости, я не думаю, что это будет проблемой.