Является ли X const & x == X & const x? - PullRequest
0 голосов
/ 17 октября 2011

Я понимаю, что X & const x является избыточным.Это не хорошо!Но я хочу знать, в чем разница между X const &x и X & const x?Первое выражение говорит, что x является ссылкой на константу class X?

Ответы [ 4 ]

5 голосов
/ 17 октября 2011

X const &x является ссылкой на const X, тогда как X & const x является недопустимым.Не существует такого понятия, как const ссылка, поскольку ссылки не являются mutable для начала.

5 голосов
/ 17 октября 2011

Сами ссылки всегда постоянны. Вы не можете изменить ссылку, чтобы ссылаться на что-то еще после инициализации.

Да, первое выражение говорит, что ссылка ссылается на константу.

3 голосов
/ 17 октября 2011

Прочитайте это справа налево: X& const x - x - это постоянная ссылка на объект типа X, которая не имеет смысла, ссылки являются постоянными по определению. X const& x - x является ссылкой на константу типа X.

0 голосов
/ 17 октября 2011

X const& если ссылка на X, которую вам не разрешено изменять посредством ссылки.Вы можете думать об этом как о доступе только для чтения.То, является ли X сам по себе const, не отражается в ссылочном типе.Обратите внимание, что вы можете инициализировать X const& с объектами const и не- const:

X a;
X const b;
X const& r = a;   // read-only-view on non-const X
X const& s = b;   // read-only-view on const X

Важной частью является то, что вы не можете изменить X через ссылку , но вы можете изменить a напрямую, и это изменение будет отражено через r.

X& const запрещено стандартом, поскольку ссылкиво всяком случае, сами по себе никогда не могут быть изменены.

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