Программирование >>  Элементы языков с и с++ 

1 ... 53 54 55 [ 56 ] 57 58 59 ... 200


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;



1 ... 53 54 55 [ 56 ] 57 58 59 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика