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 объект.
Если сделать функцию с таким параметром - то всё правильно выдаёт ошибку.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Почему можно вызвать неконстантный метод через константную ссылку?
S s;
  const S& rc = s;
  s.f();// ???????????????????????????????????????????

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

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

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