336 Часть II. Программирование на C++
Оперируя этими спецификаторами, вы можете сами устанавливать требуемый уровень доступности. Но при этом необходимо учитывать, что структурам и классам по умолчанию присуща определенная степень доступности:
классы по умолчанию закрыты (private), в то время как структуры — открыты (public). Таким образом, данные-члены классов недоступны, а данные-члены структур доступны — если не задано иное.
С объектно-ориентированной точки зрения приветствуется именно ограничение доступа; то есть, хотя работать со структурами проще, но классы идеологически более последовательны.
Различия в наследовании. Структуры могут наследоваться, но сами они наследовать не могут. На данном этапе вы можете представлять себе наследование как состаьление новой структуры или класса из кусков других структур или классов.
Допустим, например, что вы определили класс, являющийся представлением в программном виде некоего обобщенного фрукта. Допустим далее, что часть кода этого класса вы хотите использовать для создания определенного сорта фруктов, например яблок "макинтош". Один из способов сделать это — просто скопировать в текстовом редакторе все, что может пригодиться для описания яблока как частного случая фрукта, в новую структуру или класс.
Суть наследования состоит в том, что язык поддерживает подобное заимствование свойств без необходимости заимствования кода. Такой вид взаимосвязей может быть выражен классами, но не структурами.
Классы: НОВЫЙ подход. Иногда даже становится удивительно: по-настоящему программисты начинают проникаться объектно-ориентированным духом только после знакомства с классами. Казалось бы, чего стоит — просто взять обычные структуры и преобразовать их в структуры новые, улучшенные. Однако не тут-то было.
На самом деле классы — это не просто более развитые структуры, это другой подход к представлению данных. Многие объектно-ориентированные аспекты C++, такие как наследование, полиморфизм, виртуальные классы, шаблоны, гораздо лучше поддерживаются классами, чем структурами.
Обзор классов как типов данных
Классы введены в язык как средство выражения взаимосвязей между данными и функциями путем связывания их в цельную конструкцию. Цели создания подобных конструкций могут быть разнообразными; например теми же, которыми мы руководствуемся, используя простые определения для обозначения сложных понятий материального мира.