Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 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 появляется первым (по соглашению) в объявлении класса, даже раньше объявления закрытых функций элментов.





Дата публикования: 2015-10-09; Прочитано: 176 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.406 с)...