return;

}

//==========================================================

// Главная функция

void main() {

 point pointTestPoint;

 // Вызываем дружественную функцию

 Clear(&pointTestPoint);

}

С помощью ключевого слова friend вы можете объявить некоторые методы одного класса дружественными для другого класса. Такие методы могут обращаться ко всем элементам класса, даже объявленным как private и protect, несмотря на то, что сами они входят в другой класс.

В следующем примере мы определяем два класса – line и point. В классе point определяем метод Set и объявляем его в классе line как дружественный. Дружественный метод Set может обращаться ко всем элементам класса line:

// Предварительное объявление класса line

class line;

//==========================================================

// Класс point

class point {

public:

 // Метод Set класса point

 void Set(line*);

 // …

};

//==========================================================

// Класс line

class line {

public:

 // Метод Set класса point объявляется дружественной

 // классу point

 friend void point::Set(line*);

private:

 int begin_x, begin_y;

 int end_x, end_y;

};

//==========================================================

// Функция Clear

void point::Set(line* ptrLine) {

 // Обращаемся к элементам класса line, объявленным как

 // private

 ptrLine->begin_x = 0;

 ptrLine->begin_y = 0;

 // …

 return;

}

//==========================================================

// Главная функция

void main() {

 point pointTestPoint;

 line lineTestPoint;

// Вызываем дружественный метод

 pointTestPoint.Set(&lineTestPoint);

}

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

По аналогии с дружественными функциями и методами, можно объявить дружественный класс. Все методы дружественного класса, могут обращаться ко всем элементам класса, включая элементы, объявленные как private и protect.

Так, например, в предыдущем примере вы могли бы определить, что класс point является дружественным классу line. Все методы класса point могут обращаться к любым элемента класса line.

//==========================================================

// Класс point

class point {

 // …

};

//==========================================================

// Класс line

class line {

public:

 // Класс point объявляется дружественным классу line

 friend class point;

};

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату
×