37) Дружественные функции, методы и классы.
Такое ограничение на доступ к внутренним и защищенным компонентам класса может оказаться неоправданно строгим. Оно может существенно сужать возможности наследования других классов от данного и сокращать количество вариантов его использования. Бывают случаи, когда не компонентные функции должны иметь возможность обращаться к внутренним компонентам класса. В такой ситуации класс может предоставить особые привилегии определенным внешним
функциям или компонентным функциям другого класса. Эти функции получили название дружественных. По определению, дружественной функцией класса называется функция, которая, не являясь компонентом некоторого класса, имеет доступ ко всем его компонентам. Функция не может стать другом класса «без его согласия». Для получения прав друга функция должна быть описана в теле класса со спецификатором friend. Именно при наличии такого описания класс
предоставляет функции права доступа к защищенным и внутренним компонентам.
Друзьями класса могут являться и компонентные функции другого класса.
Однако следует заметить, что такую привилегию методу другого класса может предоставить лишь автор данного класса, а не автор метода. Если необходимо, чтобы все функции некоторого класса имели доступ к внутренним полям другого класса, то весь класс может быть объявлен дружественным: friend class <имя класса >.
- 5)Указатели и ссылки.
- 12) Параметры структурных типов.
- 13) Классы памяти переменных.
- 14) Параметры-функции.
- 15) Правила, определяющие видимость переменных в функциях.
- 16) Пространства имен.
- Int Pages;
- Int getPages(); // тело будет описано в book.Сpp
- 18) Перегрузка функций.
- 19) Функции с параметрами по умолчанию.
- 20) Текстовые файлы. Отличие от Delphi Pascal.
- Int fscanf(file *stream,const char *format[,adress,...]);
- Int fprintf(file *stream,const char *format[,argument,...]);
- 21) Двоичные файлы. Отличие от Delphi Pascal.
- 22) Определение класса, компоненты класса. Ограничение доступа.
- 23) Инициализация полей при отсутствии конструктора.
- 24) Конструкторы. Инициализация полей при наличии конструктора.
- 25) Деструкторы.
- 27) Простое и множественное наследование классов.
- 28) Наследование. Ограничение доступа при наследовании.
- 29) Конструкторы и деструкторы производных классов.
- 30) Композиция.
- 31)Наполнение
- 32) Полиморфное наследование. Простой полиморфизм.
- 33) Полиморфное наследование. Сложный полиморфизм.
- 34) Статические компоненты классов.
- 35) Особенности работы с динамическими объектами.
- 36) Объекты с динамическими полями. Копирующий конструктор.
- Void Print(tPoint r) {…}
- 37) Дружественные функции, методы и классы.
- 38) Переопределение операций.
- 39) Шаблоны классов.
- 40) Шаблоны функций.
- 46) Сигналы, слоты и события Qt.