🗊Презентация Основы объектноориентированного программирования

Нажмите для полного просмотра!
Основы объектноориентированного программирования, слайд №1Основы объектноориентированного программирования, слайд №2Основы объектноориентированного программирования, слайд №3Основы объектноориентированного программирования, слайд №4Основы объектноориентированного программирования, слайд №5Основы объектноориентированного программирования, слайд №6Основы объектноориентированного программирования, слайд №7Основы объектноориентированного программирования, слайд №8Основы объектноориентированного программирования, слайд №9Основы объектноориентированного программирования, слайд №10Основы объектноориентированного программирования, слайд №11Основы объектноориентированного программирования, слайд №12Основы объектноориентированного программирования, слайд №13Основы объектноориентированного программирования, слайд №14Основы объектноориентированного программирования, слайд №15Основы объектноориентированного программирования, слайд №16Основы объектноориентированного программирования, слайд №17Основы объектноориентированного программирования, слайд №18Основы объектноориентированного программирования, слайд №19Основы объектноориентированного программирования, слайд №20Основы объектноориентированного программирования, слайд №21Основы объектноориентированного программирования, слайд №22Основы объектноориентированного программирования, слайд №23Основы объектноориентированного программирования, слайд №24Основы объектноориентированного программирования, слайд №25Основы объектноориентированного программирования, слайд №26Основы объектноориентированного программирования, слайд №27Основы объектноориентированного программирования, слайд №28Основы объектноориентированного программирования, слайд №29Основы объектноориентированного программирования, слайд №30Основы объектноориентированного программирования, слайд №31Основы объектноориентированного программирования, слайд №32Основы объектноориентированного программирования, слайд №33Основы объектноориентированного программирования, слайд №34Основы объектноориентированного программирования, слайд №35Основы объектноориентированного программирования, слайд №36Основы объектноориентированного программирования, слайд №37Основы объектноориентированного программирования, слайд №38Основы объектноориентированного программирования, слайд №39Основы объектноориентированного программирования, слайд №40Основы объектноориентированного программирования, слайд №41Основы объектноориентированного программирования, слайд №42Основы объектноориентированного программирования, слайд №43Основы объектноориентированного программирования, слайд №44Основы объектноориентированного программирования, слайд №45Основы объектноориентированного программирования, слайд №46Основы объектноориентированного программирования, слайд №47Основы объектноориентированного программирования, слайд №48Основы объектноориентированного программирования, слайд №49Основы объектноориентированного программирования, слайд №50Основы объектноориентированного программирования, слайд №51Основы объектноориентированного программирования, слайд №52

Содержание

Вы можете ознакомиться и скачать презентацию на тему Основы объектноориентированного программирования. Доклад-сообщение содержит 52 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Тема 11 
Основы объектно-ориентированного программирования
Описание слайда:
Тема 11 Основы объектно-ориентированного программирования

Слайд 2





Определение ООП
Объектно-ориентированное программирование (ООП) - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы могут образовывать иерархию наследования.
Описание слайда:
Определение ООП Объектно-ориентированное программирование (ООП) - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы могут образовывать иерархию наследования.

Слайд 3





Преимущества использования ООП
уменьшение сложности программного обеспечения;
повышение надежности программного обеспечения;
обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Описание слайда:
Преимущества использования ООП уменьшение сложности программного обеспечения; повышение надежности программного обеспечения; обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов; обеспечение возможности повторного использования отдельных компонентов программного обеспечения.

Слайд 4





Классы и объекты
Класс – определенный пользователем проблемно-ориентированный тип данных, описывающий внутреннюю структуру объектов, которые являются его экземплярами. 
Объект (экземпляр класса)  находится в таком же отношении к своему классу, в каком переменная находится по отношению к своему типу.
Описание слайда:
Классы и объекты Класс – определенный пользователем проблемно-ориентированный тип данных, описывающий внутреннюю структуру объектов, которые являются его экземплярами. Объект (экземпляр класса) находится в таком же отношении к своему классу, в каком переменная находится по отношению к своему типу.

Слайд 5





Категории программистов при объектно-ориентированном подходе
Разработчики класса определяют назначение класса, его интерфейс, реализуют интерфейс класса в рамках предоставленных им средств 
Пользователи класса создают объекты предоставленного в их распоряжение класса и работают с этими объектами, используя интерфейс, предоставленный разработчиками класса
Детали реализации класса обычно скрываются разработчиками от пользователей этого класса.
Описание слайда:
Категории программистов при объектно-ориентированном подходе Разработчики класса определяют назначение класса, его интерфейс, реализуют интерфейс класса в рамках предоставленных им средств Пользователи класса создают объекты предоставленного в их распоряжение класса и работают с этими объектами, используя интерфейс, предоставленный разработчиками класса Детали реализации класса обычно скрываются разработчиками от пользователей этого класса.

Слайд 6





Разграничения для различных категорий программистов
Описание слайда:
Разграничения для различных категорий программистов

Слайд 7





Состав класса
В состав класса входят данные и функции. В совокупности они называются членами класса.
Данные, входящие в класс, называются данными-членами или полями.
Функции, принадлежащие классу, называют функциями-членами или методами.
Объединение в одной конструкции полей и методов называется инкапсуляцией
Описание слайда:
Состав класса В состав класса входят данные и функции. В совокупности они называются членами класса. Данные, входящие в класс, называются данными-членами или полями. Функции, принадлежащие классу, называют функциями-членами или методами. Объединение в одной конструкции полей и методов называется инкапсуляцией

Слайд 8





Описание класса в языке C++ 
(в простейшем случае)
class имя_класса {
	спецификаторы_доступа
	описания_полей
	описания_методов
};
Описания полей по формату совпадают с описаниями переменных .
Описания методов представляют собой заголовки функций.
Спецификаторы доступа служат для разграничения полномочий между разработчиками и пользователями класса
Описание слайда:
Описание класса в языке C++ (в простейшем случае) class имя_класса { спецификаторы_доступа описания_полей описания_методов }; Описания полей по формату совпадают с описаниями переменных . Описания методов представляют собой заголовки функций. Спецификаторы доступа служат для разграничения полномочий между разработчиками и пользователями класса

Слайд 9





Внутренние и внешние методы
Методы класса делятся на внутренние и внешние.
Внутренние методы реализованы в рамках описания класса; их текст доступен для чтения пользователям класса.
Внешние методы реализованы как отдельные функции. Для того, чтобы показать , что это – не обычная функция, а метод конкретного класса, к имени метода добавляется имя класса с помощью операции :: (расширение области видимости). Текст внешних методов может быть скрыт от пользователей класса.
Описание слайда:
Внутренние и внешние методы Методы класса делятся на внутренние и внешние. Внутренние методы реализованы в рамках описания класса; их текст доступен для чтения пользователям класса. Внешние методы реализованы как отдельные функции. Для того, чтобы показать , что это – не обычная функция, а метод конкретного класса, к имени метода добавляется имя класса с помощью операции :: (расширение области видимости). Текст внешних методов может быть скрыт от пользователей класса.

Слайд 10





Пример описания и реализации класса (точка на плоскости)
1) Реализация с использованием внутренних методов
Описание слайда:
Пример описания и реализации класса (точка на плоскости) 1) Реализация с использованием внутренних методов

Слайд 11





Пример описания и реализации класса (точка на плоскости)
2) Реализация с использованием внешних методов
Описание слайда:
Пример описания и реализации класса (точка на плоскости) 2) Реализация с использованием внешних методов

Слайд 12





Использование класса Point2D
// ВНИМАНИЕ! Приведенный текст не работает 
// (ошибки компиляции)
Point2D p; // создание объекта
p.x = 12; // обращение к полям объекта
p.y = -3;
cout << p.Module();
     // вызов метода в применении к объекту p
Описание слайда:
Использование класса Point2D // ВНИМАНИЕ! Приведенный текст не работает // (ошибки компиляции) Point2D p; // создание объекта p.x = 12; // обращение к полям объекта p.y = -3; cout << p.Module(); // вызов метода в применении к объекту p

Слайд 13





Недостатки приведенной реализации
После создания объекта значения его полей не определены (решается написанием конструкторов)
Пользователь класса не имеет доступа к элементам (полям и методам) созданного объекта (решается использованием спецификаторов доступа)
Описание слайда:
Недостатки приведенной реализации После создания объекта значения его полей не определены (решается написанием конструкторов) Пользователь класса не имеет доступа к элементам (полям и методам) созданного объекта (решается использованием спецификаторов доступа)

Слайд 14





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

Слайд 15





Точка на плоскости (вариант 2)
// ошибки компиляции исчезли!
Point2D p; // создание объекта
p.x = 12; // обращение к полям объекта
p.y = -3;
cout << p.Module();
     // вызов метода в применении к объекту p
Описание слайда:
Точка на плоскости (вариант 2) // ошибки компиляции исчезли! Point2D p; // создание объекта p.x = 12; // обращение к полям объекта p.y = -3; cout << p.Module(); // вызов метода в применении к объекту p

Слайд 16





Рекомендации по использованию разграничений доступа
Поля класса следует максимально защитить от пользователей класса, объявив их со спецификатором private:
Для работы с объектами пользователь может пользоваться методами этих объектов, объявленными со спецификатором public:
Для получения информации о характеристиках объекта (в том числе о защищённых полях) должны быть написаны т.н. get-методы
Для изменения характеристик объекта (в том числе защищённых полей) должны быть написаны т.н. set-методы
Описание слайда:
Рекомендации по использованию разграничений доступа Поля класса следует максимально защитить от пользователей класса, объявив их со спецификатором private: Для работы с объектами пользователь может пользоваться методами этих объектов, объявленными со спецификатором public: Для получения информации о характеристиках объекта (в том числе о защищённых полях) должны быть написаны т.н. get-методы Для изменения характеристик объекта (в том числе защищённых полей) должны быть написаны т.н. set-методы

Слайд 17





Точка на плоскости (вариант 3)
 Описание класса
Описание слайда:
Точка на плоскости (вариант 3) Описание класса

Слайд 18





Точка на плоскости (вариант 3)
 Реализация класса
Описание слайда:
Точка на плоскости (вариант 3) Реализация класса

Слайд 19





Точка на плоскости (вариант 3)
 Использование класса
Point2D p; // создание объекта

p.x = 12; // обращение к защищённым полям объекта
p.y = -3; // приведёт к ошибкам компиляции
p.SetX(12); // надо использовать set-методы
p.SetY(-3);
cout << p.Module();
Описание слайда:
Точка на плоскости (вариант 3) Использование класса Point2D p; // создание объекта p.x = 12; // обращение к защищённым полям объекта p.y = -3; // приведёт к ошибкам компиляции p.SetX(12); // надо использовать set-методы p.SetY(-3); cout << p.Module();

Слайд 20





Константные методы
Методы, не изменяющие значения полей объекта, для которого эти методы применяются , называются константными.
Для объявления константного метода необходимо записать слово const в конце заголовка такого метода (как в описании класса, так и в реализации)
Преимущества константных методов:
дополнительный контроль компилятора за правильностью написания;
в функциях, в которые объект передаётся по константной ссылке, для этого объекта можно вызывать только константные методы.
Описание слайда:
Константные методы Методы, не изменяющие значения полей объекта, для которого эти методы применяются , называются константными. Для объявления константного метода необходимо записать слово const в конце заголовка такого метода (как в описании класса, так и в реализации) Преимущества константных методов: дополнительный контроль компилятора за правильностью написания; в функциях, в которые объект передаётся по константной ссылке, для этого объекта можно вызывать только константные методы.

Слайд 21





Точка на плоскости (вариант 4)
 Описание и реализация класса
Описание слайда:
Точка на плоскости (вариант 4) Описание и реализация класса

Слайд 22





Точка на плоскости (вариант 4)
 Использование класса
Если методы класса Point2D, вызываемые в  функции PrintPoint, не объявлены константными, возникнет ошибка компиляции этого кода!
Описание слайда:
Точка на плоскости (вариант 4) Использование класса Если методы класса Point2D, вызываемые в функции PrintPoint, не объявлены константными, возникнет ошибка компиляции этого кода!

Слайд 23





Конструкторы
Конструктор – специальный метод, который  неявно вызывается при создании нового объекта. 
Назначение конструктора – выполнение дополнительных действий по инициализации объекта (например, задание начальных значений полей создаваемого объекта).
Описание слайда:
Конструкторы Конструктор – специальный метод, который неявно вызывается при создании нового объекта. Назначение конструктора – выполнение дополнительных действий по инициализации объекта (например, задание начальных значений полей создаваемого объекта).

Слайд 24





Описание конструктора
Конструктор может быть как внутренним, так и внешним методом;
Имя конструктора совпадает с именем класса;
Конструктор не возвращает никакого значения (даже void);
За счет механизма перегрузки может быть создано  несколько конструкторов, различающихся набором параметров;
Если ни одного конструктора не написано, реализуется т.н. конструктор по умолчанию без параметров. Этот конструктор не выполняет никаких дополнительных действий.
Описание слайда:
Описание конструктора Конструктор может быть как внутренним, так и внешним методом; Имя конструктора совпадает с именем класса; Конструктор не возвращает никакого значения (даже void); За счет механизма перегрузки может быть создано несколько конструкторов, различающихся набором параметров; Если ни одного конструктора не написано, реализуется т.н. конструктор по умолчанию без параметров. Этот конструктор не выполняет никаких дополнительных действий.

Слайд 25





Точка на плоскости (вариант 5)
 Описание класса
Описание слайда:
Точка на плоскости (вариант 5) Описание класса

Слайд 26





Точка на плоскости (вариант 5)
 Реализация конструкторов
За счет использования параметров по умолчанию можно  обойтись одним конструктором:
Описание слайда:
Точка на плоскости (вариант 5) Реализация конструкторов За счет использования параметров по умолчанию можно обойтись одним конструктором:

Слайд 27





Вызов нужного конструктора
Описание слайда:
Вызов нужного конструктора

Слайд 28





Список инициализаторов в конструкторе
В реализации конструктора может быть задан список инициализаторов, который записывается после заголовка конструктора через знак :. Элементы списка разделяются запятыми.
Каждый элемент списка содержит имя поля и способ его инициализации в круглых скобках.
Для обычных полей использование списка инициализации допустимо, но не обязательно.
Список инициализации обязателен:
если в качестве поля задаётся объект другого класса, для которого должен быть запущен конструктор;
для вызова конструктора предка при использовании механизма наследования
Описание слайда:
Список инициализаторов в конструкторе В реализации конструктора может быть задан список инициализаторов, который записывается после заголовка конструктора через знак :. Элементы списка разделяются запятыми. Каждый элемент списка содержит имя поля и способ его инициализации в круглых скобках. Для обычных полей использование списка инициализации допустимо, но не обязательно. Список инициализации обязателен: если в качестве поля задаётся объект другого класса, для которого должен быть запущен конструктор; для вызова конструктора предка при использовании механизма наследования

Слайд 29





Пример конструктора со списком инициализаторов
Обратите внимание на то, что тело конструктора стало пустым!
Описание слайда:
Пример конструктора со списком инициализаторов Обратите внимание на то, что тело конструктора стало пустым!

Слайд 30





Деструкторы
Деструктор – специальный метод, который  неявно вызывается при корректном уничтожении объекта. 
Назначение деструктора – выполнение дополнительных действий по освобождении ресурсов, захваченных при создании объекта или в процессе работы с ним.
Если деструктор не написан, вызывается т.н. деструктор по умолчанию, который не выполняет никаких дополнительных действий.
Описание слайда:
Деструкторы Деструктор – специальный метод, который неявно вызывается при корректном уничтожении объекта. Назначение деструктора – выполнение дополнительных действий по освобождении ресурсов, захваченных при создании объекта или в процессе работы с ним. Если деструктор не написан, вызывается т.н. деструктор по умолчанию, который не выполняет никаких дополнительных действий.

Слайд 31





Вызовы деструктора
void my_func() {
  Point2D p1; 
  Point2D* t1 = new Point2D(10, -3);
  Point2D* t2 = new Point2D(0, 16);
…
  delete t1; 
     // вызывается деструктор для 
     // объекта, адрес которого хранится в t1
  return;
     // вызывается деструктор для локального    
     // объекта p1, время жизни которого    
     // истекает
}
Для объекта, адрес которого хранится в t2, деструктор НЕ ВЫЗЫВАЕТСЯ!
Описание слайда:
Вызовы деструктора void my_func() { Point2D p1; Point2D* t1 = new Point2D(10, -3); Point2D* t2 = new Point2D(0, 16); … delete t1; // вызывается деструктор для // объекта, адрес которого хранится в t1 return; // вызывается деструктор для локального // объекта p1, время жизни которого // истекает } Для объекта, адрес которого хранится в t2, деструктор НЕ ВЫЗЫВАЕТСЯ!

Слайд 32





Описание деструктора
Деструктор может быть как внутренним, так и внешним методом;
Имя деструктора совпадает с именем класса, перед которым стоит знак ~;
Деструктор не имеет параметров.
Описание слайда:
Описание деструктора Деструктор может быть как внутренним, так и внешним методом; Имя деструктора совпадает с именем класса, перед которым стоит знак ~; Деструктор не имеет параметров.

Слайд 33





Пример 2: класс «человек»
 Описание класса
Описание слайда:
Пример 2: класс «человек» Описание класса

Слайд 34





Пример 2: класс «человек»
 Реализация конструктора и деструктора
Описание слайда:
Пример 2: класс «человек» Реализация конструктора и деструктора

Слайд 35





Конструктор копирования
Конструктор копирования – специальный конструктор, который получает в качестве параметра константную ссылку на объект этого же типа:
Описание слайда:
Конструктор копирования Конструктор копирования – специальный конструктор, который получает в качестве параметра константную ссылку на объект этого же типа:

Слайд 36





Вызовы конструктора копирования
Конструктор копирования вызывается:
при создании нового объекта с инициализацией существующим объектом:
Описание слайда:
Вызовы конструктора копирования Конструктор копирования вызывается: при создании нового объекта с инициализацией существующим объектом:

Слайд 37





Вызовы конструктора копирования
Конструктор копирования вызывается:
при передаче в функцию объекта по значению:
Описание слайда:
Вызовы конструктора копирования Конструктор копирования вызывается: при передаче в функцию объекта по значению:

Слайд 38





Вызовы конструктора копирования
Конструктор копирования вызывается:
при выходе из функции, возвращающей объект:
Описание слайда:
Вызовы конструктора копирования Конструктор копирования вызывается: при выходе из функции, возвращающей объект:

Слайд 39





Когда нужно писать конструктор копирования?
Если конструктор копирования не написан, работает т.н. стандартный конструктор копирования 
Стандартный конструктор копирует значения всех полей источника в создаваемый объект. Если этого достаточно, писать собственный конструктор копирования не нужно.
Для класса Point2D можно воспользоваться стандартным конструктором.
Класс Person требует написания собственного конструктора копирования, т.к. необходимо выделить память для хранения новой строки с именем.
Описание слайда:
Когда нужно писать конструктор копирования? Если конструктор копирования не написан, работает т.н. стандартный конструктор копирования Стандартный конструктор копирует значения всех полей источника в создаваемый объект. Если этого достаточно, писать собственный конструктор копирования не нужно. Для класса Point2D можно воспользоваться стандартным конструктором. Класс Person требует написания собственного конструктора копирования, т.к. необходимо выделить память для хранения новой строки с именем.

Слайд 40





Пример 2: класс «человек»
 Реализация конструктора копирования
Описание слайда:
Пример 2: класс «человек» Реализация конструктора копирования

Слайд 41





Указатель this
При работе методов класса специальный указатель this содержит адрес объекта, для которого вызывается этот метод.
Описание слайда:
Указатель this При работе методов класса специальный указатель this содержит адрес объекта, для которого вызывается этот метод.

Слайд 42





Константные и статические поля
Поле класса может быть объявлено константным с помощью модификатора const. Константные поля могут содержать различные значения для различных объектов. Эти значения задаются в конструкторе и в дальнейшем не могут быть изменены.
Поле класса может быть объявлено статическим с помощью модификатора static. При реализации класса необходимо определить поле, общее для всех объектов этого класса. Если статическое поле объявлено как public, к нему можно обращаться и пользователям класса
Описание слайда:
Константные и статические поля Поле класса может быть объявлено константным с помощью модификатора const. Константные поля могут содержать различные значения для различных объектов. Эти значения задаются в конструкторе и в дальнейшем не могут быть изменены. Поле класса может быть объявлено статическим с помощью модификатора static. При реализации класса необходимо определить поле, общее для всех объектов этого класса. Если статическое поле объявлено как public, к нему можно обращаться и пользователям класса

Слайд 43





Пример работы с константными и статическими полями
Описание слайда:
Пример работы с константными и статическими полями

Слайд 44





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

Слайд 45





Пример выброса исключений в конструкторе
Поле «имя» для каждого объекта класса Person не должно быть пустой строкой. Кроме того, недопустима передача в конструктор пустого указателя.
Описание слайда:
Пример выброса исключений в конструкторе Поле «имя» для каждого объекта класса Person не должно быть пустой строкой. Кроме того, недопустима передача в конструктор пустого указателя.

Слайд 46





Перехват выброшенных исключений
Описание слайда:
Перехват выброшенных исключений

Слайд 47





Перехват выброшенных исключений (2-й способ)
Описание слайда:
Перехват выброшенных исключений (2-й способ)

Слайд 48





Использование стандартного класса exception
Для эффективной обработки выбрасываемых исключений можно воспользоваться стандартным классом exception. В его состав, помимо других методов, входят:
конструктор, получающий в качестве параметра строку символов – текст сообщения, связанного с исключением;
метод what(), который возвращает строку, переданную в конструктор.
Описание слайда:
Использование стандартного класса exception Для эффективной обработки выбрасываемых исключений можно воспользоваться стандартным классом exception. В его состав, помимо других методов, входят: конструктор, получающий в качестве параметра строку символов – текст сообщения, связанного с исключением; метод what(), который возвращает строку, переданную в конструктор.

Слайд 49





Пример использования класса exception
Описание слайда:
Пример использования класса exception

Слайд 50





Дружественные функции и классы
Иногда желательно иметь непосредственный доступ извне к скрытым полям класса. Это достигается за счет использования дружественных функций и классов. 
Дружественная функция, которая может быть обычной функцией или методом другого класса, должна быть описана внутри класса, к скрытым полям которого она должна иметь доступ, с описателем friend, и получать в качестве параметра объект класса или ссылку на этот объект.
Если все методы какого-то класса должны иметь доступ к скрытым полям другого, то весь такой класс можно объявить дружественным.
Описание слайда:
Дружественные функции и классы Иногда желательно иметь непосредственный доступ извне к скрытым полям класса. Это достигается за счет использования дружественных функций и классов. Дружественная функция, которая может быть обычной функцией или методом другого класса, должна быть описана внутри класса, к скрытым полям которого она должна иметь доступ, с описателем friend, и получать в качестве параметра объект класса или ссылку на этот объект. Если все методы какого-то класса должны иметь доступ к скрытым полям другого, то весь такой класс можно объявить дружественным.

Слайд 51





Примеры задания дружественных функций и классов
class Point2D {
…
 friend my_func(Point2D&);
 friend another_class::method(Point2D, int);
 …
 friend class some_class;
};
Описание слайда:
Примеры задания дружественных функций и классов class Point2D { … friend my_func(Point2D&); friend another_class::method(Point2D, int); … friend class some_class; };

Слайд 52





Использование стража включения
Для  предотвращения ошибок, связанных с повторным описанием класса, логично обрамлять это описание стражем включения:
Описание слайда:
Использование стража включения Для предотвращения ошибок, связанных с повторным описанием класса, логично обрамлять это описание стражем включения:



Похожие презентации
Mypresentation.ru
Загрузить презентацию