Комментарий к одному из моих постов заинтересовал меня:
Я тоже . Я также даю аксессорам / мутаторам то же имя.
Мне было интересно об этом, потому что я всегда использовал setBar(int bar)
вместо мутатора, названного одним и тем же. Я хочу знать: может ли компилятор определить на основе идентификатора const, что мутирует во время выполнения, или он может использовать то же имя функции, потому что он имеет параметр?
Будет ли это хорошо скомпилироваться:
class Foo
{
int bar_;
public:
int bar() { return bar_; }
void bar(int bar) { bar_ = bar; }
}
Или я должен сделать это (я понимаю, что должен делать это в любом случае, просто бегите со мной в этом):
int bar() const { return bar_; }
Я не знаю, что есть что. Правильность Const важна, поэтому я думаю, что я бы хотел, чтобы компилятор возражал против перегрузки, поскольку один изменяет, а другой нет.
Почему это так работает?