С++ для начинающих - Учебное пособие

Часть iv объектное программирование

В  части  4  мы  сосредоточимся  на  объектном  программировании,  т.е.  на  применении классов C++ для определения новых типов, манипулировать которыми так же просто, как и встроенными. Создавая новые типы для описания предметной области, C++ помогает программисту  писать  более  легкие  для  понимания  приложения.   Классы  позволяют отделить детали, касающиеся реализации нового типа, от определения интерфейса и операций,   предоставляемых   пользователю.   При   этом   уделяется   меньше   внимания мелочам, из-за чего программирование становится таким утомительным занятием. Значимые для приложения типы можно реализовать всего один раз, после чего использовать повторно. Средства, обеспечивающие инкапсуляцию данных и функций, необходимых для реализации типа, помогают значительно упростить последующее сопровождение и развитие приложения.

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

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

В главе 15 мы расскажем о перегрузке операторов, которая позволяет использовать операнды  типа  класса  со  встроенными  операторами,  описанными  в  главе  4.  Таким образом, работа с объектами типа класса может быть сделана столь же понятной, как и работа со встроенными типами. В начале главы 15 представлены общие концепции и соображения, касающиеся проектирования перегрузки операторов, а затем рассмотрены конкретные операторы, такие, как присваивание, взятие индекса, вызов, а также специфичные  для  классов  операторы  new и  delete.  Иногда  необходимо  объявить перегруженный оператор, как друга класса, наделив его специальными правами доступа, в   данной   главе   объясняется,   зачем   это   нужно.   Здесь   же  представлен   еще   один специальный   вид  функций-членов –  конвертеры,   которые  позволяют   программисту определить  стандартные  преобразования.  Конвертеры  неявно  применяются компилятором, когда объекты класса используются в качестве фактических аргументов функции или операндов встроенного либо перегруженного оператора. Завершается глава изложением правил разрешения перегрузки функций с учетом аргументов типа класса, функций-членов и перегруженных операторов.

Тема  главы  16 – шаблоны  классов.  Шаблон – это предписание для создания  класса, в котором  один  или  несколько  типов  параметризованы.  Например,  vector может  быть параметризован  типом  элементов,  хранящихся  в  нем,  а  buffer –  типом  элементов  в буфере или его размером. В этой главе объясняется, как определить и конкретизировать шаблон.  Поддержка  классов  в  C++  теперь  рассматривается  иначе –  в  свете  наличия шаблонов, и снова обсуждаются функции-члены, объявления друзей и вложенные типы. Здесь мы еще раз вернемся к модели компиляции шаблонов, описанной в главе 10, чтобы показать, какое влияние оказывают на нее шаблоны классов.

 

13