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

Доступ к членам класса

Инициализация | Конструктора); | Деструктор- это функция, которая автоматически выполняется, когда экземпляр класса уничтожается. | Имя объекта. имя компонента | Параметров) | Друзья классов | StrokaZ; |


Читайте также:
  1. IX. О ПОЛИТИЧЕСКОМ ДЕЙСТВИИ РАБОЧЕГО КЛАССА
  2. А. *Не більше 0,5 км пішохідної доступності
  3. А5. Синтаксические нормы (ошибки в согласовании, управлении, построении предложений с однородными членами, построении сложноподчиненных предложений).
  4. Антигены гистосовместимости какого класса отличают антиген-презентирующие клетки от всех прочих соматических клеток?
  5. Атрибуты, создание собственного класса атрибута
  6. Базовый класс исключений, конструкторы, реализация собственного класса исключений
  7. Благодать доступа

Существуют три уровня доступа к данным и функциям, входящим в класс, для каждого из которых предусмотрен свой спецификатор.

1. Данные или функции, описанные после ключевого слова public, являются открытыми (общедоступными). Это означает, что к ним можно обращаться, откуда угодно: из функций данного класса, из функций других классов, из программы. Обычно открывают функции общего назначения, чтобы с их помощью можно было бы посылать сообщения объектам.

 

2. Данные и функции, описанные после ключевого слова private, являются закрытыми (частными, приватными). Это означает, что к ним можно обращаться только из функций данного класса (открытых или закрытых), из программы к ним обратится нельзя. Обычно данные класса закрывают, выполняется,так называемый, принцип инкапсуляции данных внутри объекта. Иногда закрывают также и функции, если они обслуживают внутренние задачи класса.

 

3. Данные и функции, описанные после ключевого слова protected, являются защищенными. Такие члены класса доступны только данному классу и классам, производным от данного. Защищенные отличаются от закрытых членов класса, если имеет место наследование.

Закрытые члены класса недоступны и в производных классах.

 

Ключевые слова public, private, protected могут встречаться в описании класса в любом порядке и количестве.

 

По умолчанию (без использования спецификаторов доступа),

если класс определен с помощью ключевого слова struct, то все компоненты класса являются общедоступными, статус – public ( не выполняетcя принцип

инкапсуляции данных внутри объекта);

в классах – объединениях union все элементы класса общедоступны,

но в каждый момент времени исполнения программы объект такого класса содержит только один компонент класса

(многократное использование одних и тех же участков памяти для разных целей);

все компоненты класса, определение которого начинается со служебного слова class недоступны для внешних обращений - статус private.

 

Изменить статус доступа компонент при определении класса позволяют спецификаторы доступа: public - общедоступный, private – собственный, protected – защищенный, за которыми помещается двоеточие.

 

Если в определении появился спецификатор доступа, то до следующего спецификатора все компоненты класса будут иметь указанный статус

(protected и private эквивалентныпри использовании классов без порождений).

 

Как правило, данные объявляют со статусом private, а компонентные функции, с помощью которых можно изменять эти данные, объявляют со статусом public.

class A {

int X; // закрытое по умолчанию данное - член

int Y; // то же

void f (); // закрытая по умолчанию функция - член

protected:

void init (); // защищенная функция, доступная в производных

// классах

public:

void setX (int); // открытая функция

void setY (int); // то же

};

Если статический компонент класса имеет статус private или protected, то к нему извне можно обращаться только через компонентные функции, при наличии уже определенного объекта.

Возможность обращения к статическому элементу без имени конкретного объекта (и до объявления объектов) дает статическая компонентная функция, определенная в классе со спецификатором static.

Такая функция сохраняет все свойства обычных компонентных функций,

Но дополнительно такую функцию можно вызвать

имя класса:: имя статической функции

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

 

#include <iostream.h>

class goods1 // класс “ товар1”

{ // закрытые по умолчанию данные – члены класса

char name[40]; // наименование товара

float price; // закупочная цена

static int percent; // торговая наценка

public: // открытые члены класса

// компонентные функции:

void vvod () // ввод данных о товаре

{ cin >> name;

cin>> price; }

static void SetPer (int newper) // статическая функция для

{ preset = newper;} // изменения статического элемента

void vivod () // вывод данных о товаре

{ cout <<”\n” << name;

cout <<”: Розничная цена =”<< price*(1.0+ goods::percent*0.01);}

};

int goods::percent =25; // внешнее описаниеи инициализация

// статического компонента


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


<== предыдущая страница | следующая страница ==>
Такой элемент должен быть определен в классе как статический.| Конструкторы и деструкторы

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