Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
{
goods top [5] ={ { “Костюм “, 10000}, { “Шляпа”, 1100 } };
// инициализация двух объектов из пяти при объявлении массива объектов
for (int i =2; i <5; i++) top [i].vvod();
// вводятся данные в объекты массива с помощью компонентной функции
for(i =0; i<5; i++) top[i].vivod; // выводятся данные о товарах
goods::SetPer(30);
// присваивается другое значение статическому компоненту
good* ptr = top; // объявлен указатель на объект класса и инициирован
адресом первого элемента массива (экв. &top[0])
for(i=0; i <5; i++)
ptr++ -> vivod(); // после каждого вызова функции указатель
} //”настраивается” на следующий элемент
Друзья классов
Защищенные компоненты (protected) доступны внутри класса и в производных классах.
Собственные компоненты (private) локализованы в классе и не доступны извне.
Через общедоступные компоненты (public) осуществляется взаимодействие класса с любыми частями программы.
Не редко возникает необходимость использования, каких либо внешних по отношению к классу функций общего назначения для обработки закрытых данных класса, при этом эти функции не могут быть методами класса.
В С++ предусмотрена возможность обойти это ограничение путем объявления в классе дружественных функций, или функций – друзей класса.
Таким образом, расширить интерфейс класса позволяют дружественные функции.
Дружественной функцией класса называют функцию, которая не является компонентной функцией класса, но имеет доступ к защищенным и собственным компонентам класса.
Дружественная функция
1) должна быть описана в теле класса соспецификатором friend;
2) не может быть компонентной функцией класса, в котором она определена
как дружественная;
3)может быть глобальной: class A { friend void f(…); … };
void f (…) { …}
4) может быть компонентной функцией другого ранее определенного класса;
и тогда при описании в классе надо использовать полное имя функции, включающее имя класса, которому она принадлежит:
class A { … void f1(…); …};
class B { … friend void A:: f1(…); …};
5) может быть дружественной по отношению к нескольким классам
class A; // опережающее описание класса
class B { …friend void ff (A, B); …};
class A { …friend void ff (A, B); …};
void ff (A tip1, B tip2) { тело функции}
Рассмотрим методику работы с дружественными функциями класса комплексных чисел. Такой класс входит в пакет Borland C++ (файл complex.h), мы построим свой класс (упрощенный)
//Класс комплексных чисел
#include <iostream.h>
#include <math.h>
class Complex {
Дата публикования: 2014-11-28; Прочитано: 306 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!