Qubc
@Qubc
Ненавижу полисемию.

Почему можно вызвать неконстантный метод через константную ссылку(спойлер — нельзя, невнимательность)?

class S { 
  char array[17] ;
public:
  void f(void) { ; }
  void fc(void) const { ; }
} ;
int main (void) {
  S s;
  const S& rc = s;
  s.f();// ???????????????????????????????????????????
  s.fc();
  return 0;
}

Под "константной ссылкой" подразумевается ссылка на константу или, как здесь, на read-only объект.
Если сделать функцию с таким параметром - то всё правильно выдаёт ошибку.
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему можно вызвать неконстантный метод через константную ссылку?
S s;
  const S& rc = s;
  s.f();// ???????????????????????????????????????????

Ты вызываешь метод не через ссылку. Через ссылку будет так:
rc.f();
и, разумеется, это не скомпилируется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы