17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
|
|||||||||||
1 | |||||||||||
Немного не понял описание классов16.08.2016, 09:05. Показов 806. Ответов 8
Метки нет (Все метки)
0
|
16.08.2016, 09:05 | |
Ответы с готовыми решениями:
8
Немного не понял ,написанное тут про инкремент и декремент Немного не понял. Используйте оператор foreach Еще немного про конструкторы обобщенных классов Описание классов. |
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
|
16.08.2016, 09:16 | 2 |
А если убрать?
0
|
18826 / 9829 / 2403
Регистрация: 30.01.2014
Сообщений: 17,265
|
|
16.08.2016, 09:20 | 3 |
Предварительное объявление.
Чтобы не захламлять пространство имен и не замедлять компиляцию. Конкретные заголовочные файлы подключаются в cpp, а в h оставляют предварительные объявления. Это хорошо работает в тех случаях, когда снаружи не требуется обращения к данным и функциям класса (работа с ними ведется внутри cpp). Это общепринятый в Qt подход при организации проектов.
2
|
17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
|
|
16.08.2016, 09:28 [ТС] | 4 |
Спасибо за объяснение.
0
|
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
|
16.08.2016, 09:30 | 5 |
DrOffset, как это ускорит компиляцию?
0
|
18826 / 9829 / 2403
Регистрация: 30.01.2014
Сообщений: 17,265
|
|
16.08.2016, 10:47 | 6 |
Ты серьезно?!
Допустим есть заголовочный файл А. Который реализует виджет AWidget. Он использует 10 стандартных виджетов. Если мы включаем заголовочные файлы этих 10ти виджетов в заголовочный файл А, а потом используем этот заголовочный файл еще в 20ти единицах трансляции в проекте, то мы получим включение всех 10 стандартных виджетов во все эти места (10*20 дополнительного исходного текста). Компилятору и препроцессору придется обрабатывать все эти включения, даже если они в реальности не нужны. А теперь распространим это на большой проект, скажем, в 500к строк и выше. Поэтому в Qt предприняты меры (заголовочные файлы самой Qt повсеместно используют эту технику + паттерн pimpl), которые позволяют сокращать время компиляции в таких случаях. Если их придерживаться на постоянной основе, то можно получить достаточно серьезный выигрыш.
2
|
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
|
16.08.2016, 11:52 | 7 |
Приведённый пример неудачный. Не похоже, что его будут включать в 20 местах.
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
16.08.2016, 11:56 | 8 |
0
|
18826 / 9829 / 2403
Регистрация: 30.01.2014
Сообщений: 17,265
|
|
16.08.2016, 12:10 | 9 |
Мое объяснение не касалось примера ТС, я просто привел случай достаточно показательный, чтобы проиллюстрировать проблему лично тебе (эта проблема общая для любого проекта, не только Qt, из-за особенностей компиляции в С++). Поэтому мне твой вопрос показался странным. С насколько большимим и старыми проектами ты сталкивался?
Впрочем, это же только методология. Ты либо следуешь ей, либо нет. Проекты большими становятся не за один день же. Допустим ты писал как придется, потому что считал, что проект не получится очень большим. Потом ты уволился, поступило дополнение ТЗ, потом еще одно. И вот, спустя 2 года, проект превратился в махину. Но мы не следовали методологии, поэтому нужен будет глобальный рефакторинг для ускорения компиляции и понижения связности модулей. Это цена, в общем-то, которую мы заплатим за запоздалые решения такого плана. Я много работал с такими проектами, и на своей шкуре прочувствовал цену мелких недочетов на раннем этапе, которые спустя годы превратились в огромные проблемы. Поэтому мне понятна задумка Qt-шников и я нахожу ее правильной, даже для маленьких задач.
2
|
16.08.2016, 12:10 | |
16.08.2016, 12:10 | |
Помогаю со студенческими работами здесь
9
Описание классов Описание классов Задача с использованием классов (код и условие внутри, решение кажется слишком простым, возможно не понял условие) Описание классов в Delphi 7 описание функций классов и т.д Программа на описание классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |