![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
kibsoft |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Вообще const в методах нужен только для запрета изменения данных?:
void func()const;//тут нельзя изменять все, что не mutable void fucn(const A *obj);//нельзя изменять объект A. Вот прочитал на хабре: Цитата Кроме того, этот const позволяет перегружать методы. Таким образом, вы можете писать оптимизированные варианты методов для константных объектов. Раскрывающийся текст
Результат: A(int) // x=1 f() // x=1 A(int) // x=2 f() const // x=2 То есть для константного объекта (с x=2) был вызван соответствующий метод. Оптимизированный в том смысле, что самому заботится не надо какой ты объект передаешь(const, не const) и компилятор сам выберет нужный метод? А вообще const в аргументах и т.д. хоть как-то влияет на скорость выполнения? P.S. Пока понимаю только один смысл - оберегание от случайных изменений данных. |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
по сути, разные типы аргументов угу. я тут с ними вошкался намедни.Если функция помечена как const это ещё не значит что она не изменяет объект. Просто компиллер так будет думать. Например: если метод mthod() помечен как константный, то его можно вызвать в этой функции. Т.к. объект передаётся по константной ссылке. А если метод не помечен как константный, то компиллер будет ругаться. Можно, конечно взять и пометить. Но хорошенько не подумав так лучше не делать. Т.к. компиллер тебе уже будет не помощник (ему не на что будет ругаться в других ситуациях)
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.4.2025, 15:05 |