3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
|
|
1 | |
Изменяется ли адрес или значение переменной при объявлении ее как const?27.08.2015, 14:06. Показов 2359. Ответов 17
Метки нет (Все метки)
0
|
27.08.2015, 14:06 | |
Ответы с готовыми решениями:
17
Можно ли присвоить значение переменной при ее объявлении Зачем переменной задавать значение при объявлении? Как избежать изменения одной переменной ссылочного типа, когда изменяется значение другой переменной const char не инициализируется при объявлении |
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
27.08.2015, 14:09 | 2 |
Адрес указателя можно поменять.
Значение простой переменной поменять нельзя.
1
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
|
27.08.2015, 14:16 | 3 |
Адрес не меняется никак. Где объект создан, там он всю свою жизнь и находится. const не позволяет менять значение переменной. Точнее даже, это уже не переменная, а константа.
С указателяси чуть сложнее. Может быть сам указатель константный, т.е. указывает на какой-то объект и никак это не поменять, но зато сам объект через этот указатель менять можно. А может быть константным объект, на который указывает, а сам указатель можно "направлять" на разные объекты в процессе работы.
2
|
27.08.2015, 14:20 | 4 | |||||
Сообщение было отмечено levgen как решение
Решение
смотря как объявить указатель.
2
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
|
27.08.2015, 14:21 | 5 |
Адрес указателя тоже поменять нельзя. Можно поменять значение указателя, которое как раз является адресом чего-нибудь.
1
|
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
|
|
27.08.2015, 14:22 [ТС] | 6 |
А еще такой вопрос, ключевое слово const указывает, что объект или переменная не могут изменяться.
А какое еще есть применение этого const?
0
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
||||||
27.08.2015, 14:25 | 7 | |||||
Можно объявлять константными функции-члены класса:
1
|
27.08.2015, 14:28 | 8 | |||||
Я неправильно выразился
Добавлено через 1 минуту
0
|
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
|
|
27.08.2015, 14:58 [ТС] | 9 |
а какая еще особенность функции-член константы помимо того, что она не может вызвать какую-либо функцию-член, не являющуюся константой?
0
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
|||||||||||
27.08.2015, 15:03 | 10 | ||||||||||
Ну и члены-данные никакие менять не может.
1
|
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
|
|
27.08.2015, 15:12 [ТС] | 11 |
John Prick, ну немного редактируя, то правильный ответ такой - нельзя изменять члены класса
0
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
|
27.08.2015, 15:20 | 12 |
levgen, в целом да, но лучше тогда найти в какой-нибудь литературе более точное определение. Я просто своими словами передал.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
27.08.2015, 15:49 | 13 | |||||
http://rextester.com/ZQZ62554
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
27.08.2015, 15:58 | 14 | |||||
Давайте ещё const_cast'ами побалуемся
1
|
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,252
|
|
27.08.2015, 15:59 | 15 |
hoggy, я ниже про mutable сказал.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
27.08.2015, 22:35 | 17 | |||||
конкретно этот - всегда.
а вообще нарваться на UB легко:
1
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
27.08.2015, 23:14 | 18 |
Если в итоге мы работаем с объектом, который не является константным в момент создания (строка 14), то всё ок. Если же пытаемся убрать константность у объекта, изначально созданного константным (как показал hoggy), то получим UB. Более подробно можно посмотреть в Стандарте 7.1.6.1 The cv-qualifiers.
1
|
27.08.2015, 23:14 | |
27.08.2015, 23:14 | |
Помогаю со студенческими работами здесь
18
Как при объявлении приписать к имени переменной счётчик цикла? Нюансы синтаксиса: куда прижимать звёздочку при объявлении указателя - к имени типа или к имени переменной? Как при объявлении переменной типа Sprite сразу задать нужный спрайт Как в адрес переменной ввести значение Изменяется значение переменной Как использовать радиобаттон - при выборе присвоить переменной значение или вызвать функцию. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |