Russian Qt Forum
Ноябрь 22, 2024, 06:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
Нетипичное наследование
Страниц:
1
2
[
3
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Нетипичное наследование (Прочитано 16102 раз)
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Нетипичное наследование
«
Ответ #30 :
Октябрь 12, 2017, 21:04 »
Цитировать
Так что в данном случае просто auto будет достаточно.
Нет, не всегда.. Если нет копирующего конструктора, определённого пользователем, то будет вызван конструктор по умолчанию (поправьте, если не так), что может быть затратно..
Цитировать
Скукатень. А где здесь развесистые switch'и?
Это да - не канонично
«
Последнее редактирование: Октябрь 12, 2017, 21:20 от m_ax
»
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Нетипичное наследование
«
Ответ #31 :
Октябрь 12, 2017, 23:08 »
auto&& - это т.н. "универсальная ссылка", которая биндится либо к T&, либо к T&& в зависимости от того, что стоит справа от = (т.е. в случае цикла, что возвращает operator* итератора).
Основной юзкейз использования - если предполагается делать std::forward.
Т.е., например, можно сделать итератор, который будет мувать элементы из контейнера, если контейнер - временный объект (перегрузить begin()&& и end)&&).
На практике такое, конечно же, не всречается, даже разрабы стандарта не столь упороты.
Минусом у auto&& является то, что она теряет константность, если контейнер в for-е неконстантный, а итератор возвращает ссылку.
Самое смешное, что тут поможет qAsConst, который сделан, чтобы залечить проблемы implicit sharing.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Нетипичное наследование
«
Ответ #32 :
Октябрь 13, 2017, 12:04 »
Цитата: m_ax от Октябрь 12, 2017, 20:47
Да, именно так. Это тот самый случай, когда необходимо разруливать (развлетвлять) поведение системы в зависимости только от пренадлежности её к определённому типу, минуя необходимость создавать объект класса.. Это классический паттерн класс харрактеристик (type traits). И да, он работает (и как это видно из контекста) в тех случаях, когда "checkCommand
не обязан иметь
внутренние данные команды чтобы он мог что-то решать."
Короче, всё решается в зависимости только от типа.
Очень сомневаюсь что на голом типе/статиках можно много решить
Цитата: m_ax от Октябрь 12, 2017, 21:04
Нет, не всегда.. Если нет копирующего конструктора, определённого пользователем, то будет вызван конструктор по умолчанию (поправьте, если не так), что может быть затратно..
Конструктор копирования по умолчанию, который автоматычно вызывает конструкторы копирования для всех членов.
А все-таки как охотно подхватывается любой "синтаксический сахар"
До самой задачи дела никому нет, главное - чтобы написано было круто. А еще говорят что погоня за модой - чисто женская черта
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Нетипичное наследование
«
Ответ #33 :
Октябрь 13, 2017, 12:09 »
Цитата: Igors от Октябрь 13, 2017, 12:04
А все-таки как охотно подхватывается любой "синтаксический сахар"
До самой задачи дела никому нет, главное - чтобы написано было круто. А еще говорят что погоня за модой - чисто женская черта
Как раз задачу мы и решали, в отличие от вас.
Мы добились того, что необходимые флаги для каждой команды можно описывать при создании новой команды и проверять их без создания экземпляра команды.
Если в дальнейшем, для принятия решения, понадобится экземпляр класса задачи, его всегда можно создать.
Записан
Страниц:
1
2
[
3
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...