|
|
До сих пор мы обсуждали только классы, и хотя операции упоминались,
если не считать обсуждения шагов процесса развития программного
обеспечения ($$11.3.3.2), то они были на втором плане, объекты же
практически вообще не упоминались. Понять это просто: в С++
класс, а не функция или объект, является основным понятием
организации системы.
Класс может скрывать в себе всякую специфику реализации,
наравне с "грязными" приемами программирования, а иногда он
вынужден это делать. В то же время объекты большинства классов
сами образуют регулярную структуру и используются такими способами,
что их достаточно просто описать. Объект класса может быть
совокупностью других вложенных объектов (их часто называют членами),
многие из которых, в свою очередь, являются указателями или ссылками
на другие объекты. Поэтому отдельный объект можно рассматривать как
корень дерева объектов, а все входящие в него объекты как "иерархию
объектов", которая дополняет иерархию классов, рассмотренную в $$12.2.4.
Рассмотрим в качестве примера класс строк из $$7.6:
class String { int sz; char* p; public: String(const char* q); ~String(); //... };
Объект типа String можно изобразить так:
| |