|
Программирование >> Элементы языков с и с++
C:\WINDOWS\sy5tem32\cmdi.exe The Nunber of the Model is - 100 The Nunber of the Part is - 200 The Cost of the Part is - 250.50 The ProduceForn is - Square Для продолжения нажмите любую клавишу Рис, 8.4. Результат работы программы листинга 8.4 Конструкторы и деструкторы класса Конструктор класса Конструктор класса тоже член класса, но специфический - это метод с таким же именем, что и класс. Такие методы не имеют право возвращать какие-либо значения: если вы написали в конструкторе оператор return, компилятор выдаст ошибку. Конструктор выполняет различные задачи и не виден вам. как программисту. Даже если вы сами не писали его текст, конструктор по умолчанию всегда присутствует в классе, ибо основная его задача - создавать в памяти экземпляр класса (т. е. как бы по проекту (классу) построить дом (экземпляр класса)). В этом случае конструктор берется из общего прародителя классов- класса object, в котором он имеется. Вторая задача конструктора - придавать всем членам-данным класса начальные значения. Если вы сами не построили конструктор, который станет инициализировать члены-данные вашего класса вашими же значениями, то этим данным невидимый для вас конструктор (конструктор по умолчанию) придаст свои, принятые в системе для данного типа величин значения (например, данные типа int получат нулевые значения и т. д.). В листинге 8.5 приведен пример класса с конструктором, созданным для инициализации членов-данных класса теми значениями, которые задаст пользователь класса при работе с ним. Листинг 8.5 3 Проверка класса.срр : Defines the entry point for the console application. Jinclude stdafx.h class Date Главав public: /*Это - члены-данные класса. С ними будут работать функции-члены класса: get- и set-*/ int month; int day; int year; Date{ int dy, int mn, int yr ) конструктор класса { /♦члены-данные day, month, year будут принимать значения, которые поступят в конструктор как в функцию при его использовании где-нибудь в приложении*/ day=dy; month=mn; year=yr; int getMonthO const; /♦Функция getMonthO объявлена с атрибутом const - может данные только поставлять, не изменяя их (read-only), а функция setMonth{) не имеет квалификатора const и поэтому данные внутри себя может изменять: виды функций определены вне класса (см. ниже)*/ void setMonth{int mn ); int getDay О; void setDay(int dy) ; int getYear(); void setYear(int yr); private: ~Date {) / /Деструктор класса { } /создание функций (вне класса, поэтому надо указывать имя класса, для которого эти функции создгиотся) */ int Date:: getMonth {) const ( return month; функция ничего не изменяет ------------------ void Date: :setMonth{int mn ) ( month = mn; функция изменяет член-данное класса ----------------------- int Date: :getDay {) ( return Date::day; --------------------------- void Date: :setDay(int dy ) 1 day = dy; ------------------------- int Date: :getyear{) return Date::year; --------------------------------- void Date: :setYear(int yr ) ( Date::year = yr;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |