Форум программистов, компьютерный форум CyberForum.ru

Непонятное определение функции. - C++

Восстановить пароль Регистрация
 
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
04.01.2012, 22:38     Непонятное определение функции. #1
Объясните смысл следующих определений, плз.
C++
1
2
3
4
 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
                           const QModelIndex &index) const;
 
     void setEditorData(QWidget *editor, const QModelIndex &index) const;
Конкретно не понятно что за const в конце. И первое - это определение указателя на функцию ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.01.2012, 22:47     Непонятное определение функции. #2
Прототипы функций это. Из Qt.
Первая возвращает указатель на QWidget. Принимает указатель на родителя, константную ссылку на QStyleOptionViewItem и константную ссылку на QModelIndex
Вторая ничего не возвращает, принимает указатель на QWidget и константную ссылку на QModelIndex.
Обе находятся в классе и не могут менять переменные в данном классе.

Книги, блин, читать надо.
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
04.01.2012, 22:55  [ТС]     Непонятное определение функции. #3
А конкретно const что значит ?
А, понял, наверно что ничего изменять не могут.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
04.01.2012, 23:18     Непонятное определение функции. #4
Цитата Сообщение от KBAC Посмотреть сообщение
А конкретно const что значит ?
А, понял, наверно что ничего изменять не могут.
Грубо говоря, это значит, что такой метод(в отличии от неконстантного) можно вызвать для константного объекта.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class SomeClass
{
    public:
        void f1() {} 
        void f2() const {} 
};
 
void func_const_ref(const SomeClass& ob)
{
    // ob.f1(); // ошибка
    ob.f2(); // нормально
}
 
void func_const_ptr(const SomeClass* ob)
{
    // ob->f1(); // ошибка
    ob->f2(); // нормально
}
 
void func_ref(SomeClass& ob)
{
    ob.f1(); // нормально
    ob.f2(); // нормально
}
 
 
int main()
{
    SomeClass ob;
    func_ref(ob);
    func_const_ref(ob);
    func_const_ptr(&ob);
}
Yandex
Объявления
04.01.2012, 23:18     Непонятное определение функции.
Ответ Создать тему
Опции темы

Текущее время: 20:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru