![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
#include <iostream.h>
class One
{
friend class Two;
public:
One(int = 1);
private:
int a;
};
class Two
{
public:
int ret_value(One o1, int v);
};
One::One(int a1)
{
a = a1;
}
int Two::ret_value(One o1, int v)
{
o1.a = v;
return v;
}
main()
{
Two t;
One o1;
int v, r;
cout << "Enter the number what you want to see later! " << endl;
cin >> v;
r = t.ret_value(o1,v);
cout << endl;
cout << r << endl;
return 0;
}
В этой программе класс Two является другом для класса One. Поэтому, даже если мы определяем объект класса One внутри функции описываемой в классе Two, то мы все равно имеем право на доступ к закрытым членам класса One. По этой причине, иногда говорят, что дружественность нарушает объектно-ориентированный подход.
Когда функция элемент ссылается на другой элемент какого-то объекта данного класса, имеется ввиду соответствующий объект. Это происходит благодаря тому, что каждый объект сопровождается указателем на самого себя - называемым указателем this - это неявный аргумент во всех ссылках на элементы внутри этого объекта. Указатель this можно использовать также и явно. Каждый объект может определить свой собственный адрес с помощью ключевого слова this.
Указатель this неявно используется для ссылки как на данные элементы так и на функции - элементы объекта. Тип указателя this зависит от типа объекта и от того, объявлена ли функция элемент, в которой используется this, как const. Например, в не константной функции-элементе класса Employee указатель this имеет тип Employee *const(константный указатель на объект Employee). В константной функции-элементе класса Employee указатель this имеет тип const Employee *const(константный указатель на объект Employee, который тоже константный).
Дата публикования: 2015-10-09; Прочитано: 226 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!