Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.02.2009, 18:01   #1
Роман Кор
 
Регистрация: 22.02.2009
Сообщений: 4
По умолчанию Фрагмент кода С++

Парни, я не могу понять, зачем в этом коде, после указания в скобках аргументов записан тип const?
Код:
struct SC
{
    bool operator()(const int id1, const int id2) const //вот здесь
    {
        return id1 < id2;
    }
}
Подскажите пожалуйста, кто-нибудь......

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 22.02.2009 в 20:26.
Роман Кор вне форума
Старый 22.02.2009, 18:18   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Модификатор const после заголовка функции показывает что эта функция не будет менять никаких переменных-членов. Если вы вдруг (случайно) измените какую-нибудь переменную-член класса, компилятор выдаст сообщение об ошибке
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума
Старый 22.02.2009, 18:22   #3
KVF
Пользователь
 
Регистрация: 27.07.2008
Сообщений: 30
По умолчанию

вообще const ставится для того что бы ф-я могла оперировать константными данными.
Обычным ф-ям компилятор не разрешит передовать константы.
почитай в нэте про "константные функции" все станет ясно =)
KVF вне форума
Старый 22.02.2009, 18:25   #4
Роман Кор
 
Регистрация: 22.02.2009
Сообщений: 4
По умолчанию

Спасибо огромное !!!!
Роман Кор вне форума
Старый 22.02.2009, 18:34   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от KVF Посмотреть сообщение
вообще const ставится для того что бы ф-я могла оперировать константными данными.
Обычным ф-ям компилятор не разрешит передовать константы.
почитай в нэте про "константные функции" все станет ясно =)
Он, как я понял, имел ввиду модификатор const, стоящий после кргулых скобок.
bool operator()(const int id1, const int id2) const
И этот модификатор нужен для того, что я написал постом выше, а не для того, чтобы передать константу в функцию
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума
Старый 22.02.2009, 18:52   #6
KVF
Пользователь
 
Регистрация: 27.07.2008
Сообщений: 30
По умолчанию

вообще-то некоторые компиляторы не разрешают передавать константы в обычные ф-ии, а только в константные(чтоб знать что ф-я уже точно ничего не изменит)
KVF вне форума
Старый 22.02.2009, 19:25   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Как уже выше сказали, const указывает, что метод не меняет состояние объекта. Соответственно его можно вызывать для константных объектов и не нужно будет в случае чего заморачиваться с const_cast. Для всех get-методов рекомендуется указывать этот самый const.

Вот что будет, если не указать данный const:
Код:
const SC const_my; // Константный объект класса SC
const_my(1,2);  // Ошибка. Вызов неконстантного метода для константного объекта
// Исправляется так
SC *my = const_cast<SC*>(&const_my);
(*my)(1,2);
// Или для оператора указывайте этот самый const, чтобы так не извращаться :)
pu4koff вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 20.08.2008 15:00
Word не заменяет выделенный фрагмент Romanbl4 Microsoft Office Word 3 01.08.2008 07:36
Выдернуть куски кода из html-кода trafbite Помощь студентам 7 18.08.2007 13:51
Розбор кода? KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 10.08.2007 10:56