Как компилятор определяет, какие функции-члены мутируют?C++

Программы на C++. Форум разработчиков
Anonymous
Как компилятор определяет, какие функции-члены мутируют?

Сообщение Anonymous »

Меня заинтересовал комментарий к одному из моих постов:


Меня тоже. Я также даю аксессорам/мутаторам те же имена.


Мне было интересно об этом, потому что я всегда использовал setBar(int bar)< /code> вместо мутатора с тем же именем. Я хочу знать: может ли компилятор определить на основе константного идентификатора, что меняется во время выполнения, или он может использовать то же имя функции, потому что у нее есть параметр?

Будет ли это компилируется нормально:

Код: Выделить всё

class Foo
{
int bar_;

public:
int bar() { return bar_; }
void bar(int bar) { bar_ = bar; }
}
Или мне нужно сделать это (я понимаю, что мне все равно следует это сделать, просто поговорите со мной об этом):

Код: Выделить всё

int bar() const { return bar_; }
Я не знаю, что есть что. Корректность const важна, поэтому я думаю, что мне бы хотелось, чтобы компилятор возражал против перегрузки, поскольку одна из них мутирует, а другая нет.

Почему это работает именно так?

Подробнее здесь: https://stackoverflow.com/questions/123 ... ons-mutate

Вернуться в «C++»