Сообщение Re[2]: Про указатели в Qt - нравится ли вам? от 04.10.2023 23:40
Изменено 05.10.2023 0:07 AlexGin
Re[2]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:
SP>
Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
Второй вариант — выглядит стрёмно: сохранили адрес локальной (стековой) переменной.
Он, как и сама переменная, потеряет смысл после выхода из метода (функции).
SP>C точки зрения С++, первое — явная ересь с утечкой памяти и следует предпочесть второй путь,
Почему же?
Адрес объекта в куче сохранён в коллекции.
Что не так?
SP>Подытоживая, сейчас парадигма Qt выглядит неправильно.
Она и сейчас весьма актуальна, просто появились новые инструменты (прежде всего — для GUI developing).
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).
Re[2]: Про указатели в Qt - нравится ли вам?
Здравствуйте, sergii.p, Вы писали:
SP>
Первый вариант — выглядит вполне корректно и логично (как для C++, так и для Qt).
Второй вариант — выглядит стрёмно: сохранили адрес локальной (стековой) переменной.
Он, как и сама переменная, потеряет смысл после выхода из метода (функции).
SP>C точки зрения С++, первое — явная ересь с утечкой памяти и следует предпочесть второй путь,
Почему же?
Адрес объекта в куче сохранён в коллекции.
Что не так?
Что мешает впоследствии удалить этот объект?
SP>Подытоживая, сейчас парадигма Qt выглядит неправильно.
Она и сейчас весьма актуальна, просто появились новые инструменты (прежде всего — для GUI developing).
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).