Информация об изменениях

Сообщение Re[2]: Про указатели в Qt - нравится ли вам? от 04.10.2023 23:40

Изменено 04.10.2023 23:42 AlexGin

Re[2]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:

SP>
SP>void addLabelToLayout(QLayout& layout) {
SP>    layout.addWidget(new QLabel("my label"));
SP>}

SP>void addLabelToLayout(QLayout& layout) {
SP>    QLabel l = QLabel("my label");
SP>    layout.addWidget(&l);
SP>}
SP>


Второй вариант — выглядит стрёмно: сохранили адрес локальной (стековой) переменной.
Он, как и сама переменная, потеряет смысл после выхода из метода (функции).

SP>C точки зрения С++, первое — явная ересь с утечкой памяти и следует предпочесть второй путь,


Почему же?
Адрес объекта в куче сохранён в коллекции.
Что не так?

SP>Подытоживая, сейчас парадигма Qt выглядит неправильно.


Она и сейчас весьма актуальна, просто появились новые инструменты (прежде всего — для GUI developing).
Re[2]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:

SP>
SP>void addLabelToLayout(QLayout& layout) {
SP>    layout.addWidget(new QLabel("my label"));
SP>}

SP>void addLabelToLayout(QLayout& layout) {
SP>    QLabel l = QLabel("my label");
SP>    layout.addWidget(&l);
SP>}
SP>


Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
Второй вариант — выглядит стрёмно: сохранили адрес локальной (стековой) переменной.
Он, как и сама переменная, потеряет смысл после выхода из метода (функции).

SP>C точки зрения С++, первое — явная ересь с утечкой памяти и следует предпочесть второй путь,


Почему же?
Адрес объекта в куче сохранён в коллекции.
Что не так?

SP>Подытоживая, сейчас парадигма Qt выглядит неправильно.


Она и сейчас весьма актуальна, просто появились новые инструменты (прежде всего — для GUI developing).