Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

К счастью, при программировании в рамках Qt мы обычно придерживаемся некоторого подмножества С++, которое сильно приближается к утопическому языку, о котором говорил Страуструп, что позволяет нам сконцентрировать свое внимание непосредственно на текущей проблеме. Более того, Qt в некоторых аспектах расширяет С++ благодаря своему новаторскому механизму «сигналов и слотов», поддержке кодировки Unicode и ключевому слову foreach.

В первом разделе данного приложения мы увидим, как можно объединять несколько файлов, содержащих исходный код С++, для получения исполняемой программы. Это приведет нас к изучению таких центральных концепций С++, как единица компиляции, заголовочные файлы, объектные файлы, библиотеки, и ознакомит с препроцессором, компилятором и компоновщиком С++.

Затем мы рассмотрим наиболее важные отличия языков С++, Java и C#, связанные с определением классов, использованием указателей и ссылок, перегрузками операторов, применением препроцессора и т.д. Несмотря на то что синтаксис С++ очень похож на синтаксис Java и C#, имеется тонкое отличие базовых концепций. В то же время язык С++, под влиянием которого coздaвaлиcь Java и C#, имеет много общего с этими двумя языками, в частности аналогичные типы данных, те же самые арифметические операторы и одинаковые основные операторы управления.

Последней раздел посвящен стандартной библиотеке С++, которая обеспечивает функциональность, готовую к применению в любой программе на С++. Эта библиотека развивалась в течение более 30 лет и поэтому вобрала в себя многие подходы, в том числе процедурный, объектно—ориентированный и функциональный стили программирования, а также макросы и шаблоны. По сравнению с библиoтeкaми Java и C# стандартная библиотека С++ имеет довольно ограниченную область применения; она не поддерживает программирование графического пользовательского интерфейса, многопоточную обработку, базы данных, интернационализацию, работу с сетями, XML и Unicode. Для применения С++ в этих областях предполагается, что разработчики С++ должны использовать различные библиотеки (часто зависимые от платформы).

Именно здесь приходит на помощь Qt. Сначала средства разработки Qt представляли собой межплатформенный инструментарий по созданию графического пользовательского интерфейса (набор классов, позволяющий писать переносимые приложения с графическим пользовательским интерфейсом), но затем они быстро превратились в полномасштабную рабочую среду, частично расширяющую и частично заменяющую стандартную библиотеку С++. Хотя эта книга посвящена средствам разработки Qt, полезно знать возможности стандартной библиотеки С++, поскольку вам, возможно, придется работать с программным кодом, использующим эту библиотеку.

Первое знакомство с С++

Программа С++ состоит из одной или нескольких единиц компиляции. Каждая единица компиляции представляет собой отдельный файл исходного кода, обычно имеющий расширение .cpp (другими распространенными расширениями являются .cc и .cxx); она обрабатывается компилятором за один шаг. Для каждой единицы компиляции компилятор генерирует объектный файл с расширением .obj (в Windows) или .о (в Unix и Mac OS X). Объектный файл — это бинарный файл, содержащий машинный код для той архитектуры, на которой будет выполняться программа.

После компиляции всех файлов .cpp мы можем собрать все объектные файлы для создания исполняемого модуля, используя специальную программу, называемую компоновщиком (linker). Компоновщик соединяет объектные файлы в единое целое и назначает адреса памяти функциям и другим символическим ссылкам, которые содержатся в единицах компиляции.

Рис. Б.1. Процесс компиляции программы на С++ (в Windows).

При создании программы только одна единица компиляции должна иметь функцию main, которая является точкой входа в программу. Эта функция не принадлежит никакому классу — она является глобальной функцией.

В отличие от Java, где каждый исходный файл должен содержать точно один класс, С++ позволяет организовать единицу компиляции удобным для нас способом. Можно реализовать несколько классов в одном файле .cpp или распространить реализацию класса на несколько файлов .cpp; имена исходных файлов могут быть любыми. При внесении изменений в один конкретный файл .cpp потребуется перекомпилировать этот файл и затем повторно скомпоновать приложение для создания нового исполняемого модуля.

Прежде чем мы пойдем дальше, давайте рассмотрим очень простую программу на С++, вычисляющую квадрат целого числа. Эта программа состоит из двух единиц компиляции: main.cpp и square.cpp.

Ниже показан файл square.cpp:

01 double square(double n)

02 {

03 return n * n;

04 }

Этот файл содержит лишь глобальную функцию с именем square, которая возвращает квадрат своего параметра.

  • Читать дальше
  • 1
  • ...
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: