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

Дружественные функции.

Объекты как аргументы методов и доступ к их числам. | Размещение в памяти членов объектов одного класса и способ создания общих полей (св-в). | Константные методы, их аргументы и константные объекты. | Строки на основе массива типа char и класса string | Перегрузка бинарных операций | Преобразование типов от основного к пользовательскому. | Предотвращение преобразования типов от основного к пользовательскому с помощью конструктора | Базовый и производный классы. Конструкторы производного класса. Перегрузка методов при наследовании. Алгоритм выбора перегруженного метода. | Указатели. Инициализация. Арифметические операции. | Управление памятью. Операции new и delete. Указатель this. |


Читайте также:
  1. Алгоритм нахождения точек экстремума по первому признаку экстремума функции.
  2. Виртуальные функции.
  3. Воображение: определение, виды, функции. Роль воображения в решении познавательных и личностных проблем. Роль игры в развитии воображения. Воображение и творчество.
  4. Вопрос № 54: Органы ФСБ России: их задачи и функции.
  5. Вопрос № 62 и 63: Судебная власть: природа и функции. Понятие правосудия и его конституционные признаки.
  6. Вспомогательные функции.
  7. Второй признак экстремума функции.

Если нам нужно работать с объектами двух разных классов, то нужно использовать дружественные ф-ии.

class beta; //нужно для объявления frifunc

class alpha

{

private:

int data;

public:

alpha(): data(3) { } //конструктор без

//аргументов

friend int frifunc(alpha, beta); //дружественная функция

};

///////////////////////////////////////////////////////////

class beta

{

private:

int data;

public:

beta(): data(7) { } //конструктор без

//аргументов

friend int frifunc(alpha, beta); //дружественная функция

};

//--------------------------------------------------------

int frifunc(alpha a, beta b) //определение функции

{

return(a.data + b.data);

}

///////////////////////////////////////////////////////////

int main()

{

alpha aa;

beta bb;

 

cout << frifunc(aa, bb) << endl; //вызов функции

return 0;

}

Ключевое слово: friend

Это объявление может быть присвоено где угодно внутри класса. Нет никакой разницы, запишем мы его в public- или private-секцию. Объект каждого класса передается как параметр ф-ии, и ф-ия имеет доступ к скрытым данным обоих классов.

Дружественные классы.

class alpha

{

private:

int data1;

public:

alpha(): data1(99) { } //конструктор

friend class beta; //beta – дружественный класс

};

///////////////////////////////////////////////////////////

class beta

{ //все методы имеют доступ

public: //к скрытым данным alpha

void func1(alpha a) { cout << "\ndata1=" << a.data1;}

void func2(alpha a) { cout << "\ndata1=" << a.data1;}

};

///////////////////////////////////////////////////////////

int main()

{

alpha a;

beta b;

 

b.func1(a);

b.func2(a);

cout << endl;

return 0;

}

Для класса alpha весь класс beta провозглашен дружественным. Теперь все методы beta имеют доступ к скрытым данным alpha.

 


Дата добавления: 2015-08-17; просмотров: 48 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Виртуальные функции.| Статические функции

mybiblioteka.su - 2015-2024 год. (0.005 сек.)