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

Пояснение по синтаксису - C++

Восстановить пароль Регистрация
 
lavrik
10 / 10 / 1
Регистрация: 24.02.2011
Сообщений: 649
13.09.2013, 10:51     Пояснение по синтаксису #1
только не надо гнать в гугл, я не могу там найти, т.к. не могу правильно сформировать запрос...

Код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//========================
 
IntListModel::IntListModel(const QList<int>& list, QObject* pobj)
    :QAbstractListModel(pobj)
    , m_list(list)
{
     // Конструктор  класса  
     бла-бла-бла....
}
 
//========================
 
QVariant IntListModel::data(const QModelIndex& index, int nRole) const
{
    бла-бла-бла....
}


Вопроса 2:
1) В первом методе после скобок указаны - :QAbstractListModel(pobj) , m_list(list)
Для чего это указана и что оно обозначает

2) Во втором методе после скобок указано "const". А это для чего?????

Только не пинайте))))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitriy_M
1297 / 1178 / 106
Регистрация: 20.03.2009
Сообщений: 4,214
Записей в блоге: 11
13.09.2013, 10:53     Пояснение по синтаксису #2
Цитата Сообщение от lavrik Посмотреть сообщение
только не надо гнать в гугл, я не могу там найти, т.к. не могу правильно сформировать запрос...
Цитата Сообщение от lavrik Посмотреть сообщение
Только не пинайте))))
Иди почитай учебник по C++
lavrik
10 / 10 / 1
Регистрация: 24.02.2011
Сообщений: 649
13.09.2013, 10:57  [ТС]     Пояснение по синтаксису #3
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Иди почитай учебник по C++
Спасибо за бесценную помощь...
Dmitriy_M
1297 / 1178 / 106
Регистрация: 20.03.2009
Сообщений: 4,214
Записей в блоге: 11
13.09.2013, 11:09     Пояснение по синтаксису #4
lavrik, а вы что ожидали? Что кто-то будет объяснять основы C++ в не предназначенной для этого ветке?
lavrik
10 / 10 / 1
Регистрация: 24.02.2011
Сообщений: 649
13.09.2013, 11:14  [ТС]     Пояснение по синтаксису #5
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
lavrik, а вы что ожидали? Что кто-то будет объяснять основы C++ в не предназначенной для этого ветке?
Дело в том что это выдержка из программы на Qt, поэтому здесь и написал. Да ошибся, но это по незнанию.
Но неужели это причина по человечески не помочь человеку???
Ответ в кратце будет несколько предложений... Если не хотите помогать, то лучше я считаю вообще ничего не писать, либо отправить меня в нужную ветку.
Иначе это просто флудерство, которое насколько мне известно запрещено на данном форуме...
k0ndaa
96 / 38 / 1
Регистрация: 08.08.2012
Сообщений: 86
13.09.2013, 12:29     Пояснение по синтаксису #6
Не все пятницы одинаково полезны.
Люблю отвечать на любый вопросы, когда делать нечего.

1.а) :QAbstractListModel(pobj) - вызывает конструктор родителя, со всеми вытекающими
1.б) m_list(list) инициализурет переменную m_list, аналогично коду m_list = list в теле конструктора, но гораздо приятнее на вид, избавляет от лишнего кода

2) Указывает, что возвращаемое значение QVariant будет константным. Возможно есть еще тонкости, но точно одна из причин это защита человеков от ряда возможных ошибок, т.к. этот метод возвращает копию значения.
пример:
C++ (Qt)
1
2
3
4
5
6
7
8
    
    qApp->font().setPixelSize(0); 
    // Допустим, что возвращаемая переменная не const
    // вы ожидаете, что измените размер шрифта,
    // но на самом деле вы изменяете размер у возвращенной копии,
    // а шрифт у самого приложения останется неизменным
    
    // если же возвращаемое значение const, комприлятор просто не даст вам допустить такую ошибку
пойти что-ли самому книжек почитать
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
13.09.2013, 12:35     Пояснение по синтаксису #7
Цитата Сообщение от k0ndaa Посмотреть сообщение
1.б) m_list(list) инициализурет переменную m_list, аналогично коду m_list = list в теле конструктора, но гораздо приятнее на вид, избавляет от лишнего кода
Неверно. В списке инициализации вызывается сразу конструктор для m_list с параметром. Если писать m_list = list в теле конструктора, то для m_list сначала вызовется дефолтный конструктор, а потом уже присвоится list. Будет выполнено больше действий.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
13.09.2013, 12:42     Пояснение по синтаксису #8
1) Список инициализации конструктора. Т.е. члены конструктора сразу инициализируются переданными ему параметрами. А если бы вы присваивали членам класса значения аргументов конструктора, то вначале бы они инициализировались значениями по умолчанию, а потом происходило бы присваивание.
2) Константный метод. Он не меняет состояние объекта класса. (кроме полей mutable)
k0ndaa
96 / 38 / 1
Регистрация: 08.08.2012
Сообщений: 86
13.09.2013, 12:43     Пояснение по синтаксису #9
Ну и сразу ещё поправлю сам себя весь второй пункт сплошное вранье, qapp font возвращает не const, а даже если бы и была, компилятор не ругается, только что проверил

Сообщение уже редактировать не могу, посыпаю голову пеплом, и выбегаю из комнаты гремя клешнями
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2013, 12:48     Пояснение по синтаксису #10
2.
http://habrahabr.ru/post/59558/
http://alenacpp.blogspot.com/2005/09/const-2.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2013, 12:52     Пояснение по синтаксису
Еще ссылки по теме:

вопрос по синтаксису/типам C++
C++ Пояснение функции
C++ Пояснение к функциям

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
lavrik
10 / 10 / 1
Регистрация: 24.02.2011
Сообщений: 649
13.09.2013, 12:52  [ТС]     Пояснение по синтаксису #11
Понял, всем спасибо, тема закрыта)))
Yandex
Объявления
13.09.2013, 12:52     Пояснение по синтаксису
Ответ Создать тему
Опции темы

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