Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП все лекции.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
36 Кб
Скачать
☆

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

Применяются для доступа к скрытым полям класса и представляет собой альтернативу методов.

Правила описания и особенности дружественных функций.

  1. Дружественная функция объявляется внутри класса, к элементам которого её нужен доступ с ключевым словом friend, в качестве параметра ей должен передаваться объект или ссылка на объект класса

  2. Дружественная функция может быть обычной функцией или методом ранее определенного класса на нее не распространяется действие спецификаторов доступа.

Место объявления её в классе безразлично.

  1. Одна функция может быть дружественной сразу же к нескольким классам.

Class A {

Private

Int a;

Friend void (int c)

}

Void func (int c) {

A obj;

Obj a=1;

}

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

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

Один класс А может быть объявлен дружественен другому классу Б если заголовок класса А описан внутри класса с префиксом FRIEND, тогда все методы класса А смогут использовать защищенное и приватное содержимое класса Б

Class B {

Private

Int a;

Friend class A ;

Pirvate

Int sum();

________________________________________________

Class A {

Void 9 () {

B obj;

Obj a= 1}

};

Операции дружественности несимметрично.

Т.е. если класс А дружественный к классу Б, это не означает что Б дружественен к классу А.

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

Статические элементы класса

С помощью идентификатора STATIC можно описать статические поля и методы класса

Статические поля

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

Особенности статических полей

  1. Память под статическое поле выделяется один раз при его инициализации независимо о числа созданных объектов и даже при их отсутствии

  2. Статические поля доступа как через имя класса, так и через имя объекта.

Class b {

Public

Static int count

}

A::count;

B obj;

Obj count

  1. На статические поля распространяется действия спецификатора доступа, поэтому статические поля, описанные с идентификатором PRIVATE нельзя изменить.

Class b {

Public

Static int count

}

A::count;

B obj;

Obj count = 3

Это можно сделать только с помощью статических методов

Статические методы

Предназначены для обращения к статическим полям классов

Они могут обращаться только к статическим полям и вызывать только другие статические методы, обращение производится также как и к полям.

ВИРТУАЛЬНЫЕ ФУНКЦИИ

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

Виртуальные функции важны для того

Полиморфизм поддерживается двумя способами:

  1. Посредством перегрузки виртуальных операций и функций

  2. Посредством виртуальных функций

CLASS Grafic {

PUBLIC class, public Gragic {

Void build (); public

Void Print (); void build();

} void print();

Circle A;

A build ();

Функция класса, причиной этого является то что без использования механизма виртуальных функций вызовы build будут связаны на этапе компиляции с определением функции Build из базового класса.