Ключевое слово Const добавляется в конец определения функции ... что это делает? - PullRequest
1 голос
/ 21 октября 2010

Предположим, я определил функцию в C ++ следующим образом:

void foo(int &x) const {
  x = x+10;
}

И предположим, я называю это следующим образом:

int x = 5;
foo(x);

Теперь обычно (без ключевого слова const) это успешно изменит значение x с точки зрения вызывающей стороны, поскольку переменная передается по ссылке. Ключевое слово const меняет это? (т.е. с точки зрения вызывающего абонента, является ли значение x теперь 15?)

Полагаю, я не совсем понимаю, что делает ключевое слово const, когда оно добавляется в конец определения функции ... любая помощь приветствуется.

1 Ответ

10 голосов
/ 21 октября 2010

Это не сработает. Вы можете только квалифицировать функцию-член , а не обычную функцию, не являющуюся членом.

Для функции-члена это означает, что неявный параметр this является константно-квалифицированным, поэтому вы не можете вызывать какие-либо неконстантно-квалифицированные функции-члены или изменять любые неизменяемые члены-данные экземпляра класса, для которого была вызвана функция-член.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...