Студопедия

Главная страница Случайная страница

Разделы сайта

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






Пример 10.4. Реализация принципа композиции классов






 

Написать программу для вывода на экран определенных значений.

 

Листинг 10.5

 

#include < iostream.h>

class One

{

public:

One(int = 1); //конструктор по умолчанию

void print();

private:

int a;

};

 

class Two

{

public:

Two(int = 1); //конструктор по умолчанию

void print();

private:

int a;

};

 

class OnePlusTwo_Three

{

public:

OnePlusTwo_Three(int=1, int=1); //конструктор по умолчанию

void print();

private:

One o;

Two t;

};

 

One:: One(int a1)

{

a = a1;

}

void One:: print()

{

cout < < a < < endl;

}

void Two:: print()

{

cout < < a < < endl;

}

 

Two:: Two(int a2)

{

a = a2;

}

 

OnePlusTwo_Three:: OnePlusTwo_Three(int a1, int a3): o(a1), t(a3)

{

 

}

 

void OnePlusTwo_Three:: print()

{

o.print();

t.print();

}

 

main()

{

OnePlusTwo_Three opt(6, 8);

opt.print();

return 0;

}

 

В этой программе определено три класса: One, Two, OnePlusTwo_Three.

Композиция классов в этом примере реализована в том, что мы включили под директивой private в классе OnePlusTwo_Three, два объекта классов: Two t, One o. А также посмотрев на определение конструктора класса OnePlusTwo_Three мы видим, что он содержит параметры, помогающие определить конструкторы классов One и Two.

Использование дружественных функций и указателя this. Дружественные функции определяются вне области действия этого класса, но имеют право доступа к закрытым элементам private данного класса. Функция или класс в целом могут быть объявлены другом (friend) другого класса.

Дружественные функции используются для повышения производительности.

Чтобы объявить функцию как друга (friend) класса, перед ее прототипом в описании класса ставится ключевое слово friend. Чтобы объявить класс ClassTwo как друга класса ClassOne, запишите объявление в форме friend ClassTwo в определении класса ClassOne.

Дружественность требует разрешения, то есть чтобы класс B стал другом класса A, класс A должен объявить, что класс B - его друг. Таким образом дружественность не обладает ни свойством симметричности, ни свойством транзитивности, то есть если класс A друг класса B, а класс B - друг класса C, то от сюда не следует, что класс B друг класса A, что класс C друг класса B, или что класс A - друг класса C.

Ниже приведенная программа демонстрирует объявление и использование дружественной функции setX для установки закрытого элемента данных x класса count. Заметим, что объявление friend появляется первым (по соглашению) в объявлении класса, даже раньше объявления закрытых функций элментов.

 

Пример 10.5. Реализация дружественности классов

 

Написать программу, выводящую на экран целое значение.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.