![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
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. Пока понимаю только один смысл - оберегание от случайных изменений данных. |
|
|
![]() |
Tonal |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Про оптимизацию недавно обсуждали здесь.
А по сути я с Iron Bug согласен - указание const-ов усиливает типизацию. Соответственно компилятор может помочь избежать ошибок в большем числе случаев. ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.4.2025, 12:04 |