АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

КЛАССЫ. КОНСТРУКТОРЫ

Читайте также:
  1. Абстрактные классы.
  2. Классификация ферментов. Общая характеристика класса трансфераз. Основные подклассы. Коферменты трансферазных реакций.
  3. Конструкторы и деструкторы
  4. Производные классы.
  5. Стандартные конструкторы

Конструктор – метод, который вызывается при создании объекта.

Имя конструктора всегда совпадает с именем класса, конструктор никогда не возвращает значение.

class Date

{

private:

int d, m, y;

public:

Date(int dd, int mm, int yy);

}

Date::Date (int dd, int mm, int yy)

{

d=dd;

m=mm;

y=yy;

// проверка

}

В большинстве случаев классы содержат несколько конструкторов, т.к. обычно возникают разные ситуации, которые требуют создания объекта.

Добавим в наш класс ещё 3 конструктора:

class Date;{

private:

int d, m, y;

public:

Date (int dd, int mm, int yy);

Date (int dd, int mm);

Date (int dd);

Date();}

конструкторы определяются таким же образом. В нашем примере не указанные параметры в алгоритмах добавленных конструкторов можно взять из текущей даты.

Среди всех возможных этих ситуаций выделяются специальные случаи. Добавим в наш класс несколько конструкторов. Необходимость тех или иных конструкторов определяется программистом, но будучи специальному методу конструкторы определяют поведение компилятора.

КЛАССЫ. ПРИНЦИП КОМПОЗИЦИИ

Композиция — объекты одного класса входят в объекты другого и зависят друг от друга по времени жизни.

Что такое композиция? Композиция (агрегирование, включение) – простейший механизм для создания нового класса путем объединения нескольких объектов существующих классов в единое целое При агрегировании между классами действует «отношение принадлежности» У машины есть кузов, колеса и двигатель У человека есть голова, руки, ноги и тело У треугольника есть вершины Вложенные объекты обычно объявляются закрытыми (private) внутри класса-агрегата

Пример 1 - Треугольник

class CPoint

{ public: CPoint(double x, double y);

double GetX()const;

double GetY()const;

private: double m_x, m_y;

};

class CTriangle

{ public: CTriangle(CPoint const& p1, CPoint const& p2, CPoint const& p3);

CPoint GetVertex(unsigned index)const;

private: CPoint m_p1, m_p2, m_p3;

};

Пример 2 - Автомобиль //

// Колесо

class CWheel {... };

// Кузов

class CBody {... };

// Двигатель

class CEngine {... };

// Автомобиль

class CAutomobile { public:... private: CBody m_body; CEngine m_engine; CWheel m_wheels[4]; };

 

 

КЛАССЫ. ДЕСТРУКТОР

Пример: класс динамического массива целых чисел с проверкой выхода за границы массива.

class IntArray

{

private

int *p;

int len;

public:

IntArray(int l=10);

int get(int c);

void set(int i, int val);

int getLen();

void clear ();

}

 

Идеальное решение – случай, когда за вызовом кода очистки следит компилятор. Который будет гарантировать, что код будет обязательно вызван и это произойдёт только 1 раз. Эту возможность обеспечивает специальный метод – деструктор.

Деструктор – это метод который вызывается компилятором, когда завершается время жизни объекта.

Имя деструктора совпадает с именем класса, предваряется значком «~», и деструктор не имеет параметров и возвращаемого значения.

IntArray::~IntArray() {delete []p;}

В данном случае память – не единственный ресурс, которым может упралять пара конструктор, деструктор.

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)