![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
#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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!