Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
kordax
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
#1

Не ясна запись

21.02.2015, 03:28. Просмотров 829. Ответов 3
Метки нет (Все метки)

Всем привет.

Есть класс:
C++
1
2
3
4
5
6
7
8
9
10
11
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
};
Далее, в коде есть такие строки:
C++
1
2
3
4
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
В данном случае описывается конструктор MainWindow, что и понятно.
Однако мне не понятно наследование в данном случае, а именно подстрока:
C++
1
: QMainWindow(parent), ui(new Ui::MainWindow)
Что в этом случае произойдёт с конструктором MainWindow и конструктором родителя?
C ui вообще не ясно.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2015, 03:28
Ответы с готовыми решениями:

Ошибка в std::copy не ясна
здравствуйте, есть следующий код, в котором возникает ошибка во время...

Не выполняется условие. Причина не ясна
Вот код /*...

люди добрые! нужно программа инверсная запись чисел, запись из инверсной в обычную
помогите сделать программа или датьсходник, можно на с++ или на паскале спасибо...

[Файлы] Запись-чтение-запись. Почему не прокатывает?
Сначала записываю в файл "а" запись "makulatura", потом читаю ее в строку h....

Нет вывода и неправильная запись (запись)
Доброго времени суток! Есть программка записывающая студентов. При записи...

3
iRomul
159 / 100 / 14
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
21.02.2015, 03:37 #2
Вручную вызывается конструктор с параметром, в нашем случае это QMainWidget(QObject* parent);
Т.е. сначала вызывается конструктор родителя, после чего запускается тело конструктора MainWindow.
Это необходимо для того, что бы явно вызвать нужный нам конструктор родителя, в противном случае у родителя же вызовется конструктор без параметров. В случае с QMainWindow вызовется QMainWidget(QObject* parent = 0), и мы потеряем указатель на родителя, что может привести к утечке.
0
kordax
4 / 4 / 2
Регистрация: 08.06.2014
Сообщений: 89
21.02.2015, 03:54  [ТС] #3
ui вызовется перед QMainWindow, верно?
0
iRomul
159 / 100 / 14
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
21.02.2015, 03:58 #4
Лучший ответ Сообщение было отмечено kordax как решение

Решение

kordax, сначала вызывается конструктор QMainWidget, потом указателю ui присвоится адрес на выделенную память, после чего вызовется ui->setupUi(this);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2015, 03:58

Не ясна семантика HTML 5
Здрасте! Читал, что в HTML 5 были придуманы теги <header>, <footer>, <nav>,...

Не до конца ясна работа наушников
Здравствуйте) есть наушники ATH-AD300 (страница на офф. сайте), купил давно и...

Не ясна работа кода программы
Здравствуйте, я на вашем форуме и в Си новичек. Мне нужна помощь с кодом....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru