- •2. Перегрузка функций.
- •4. Использование операторов new и delete.
- •5. Понятие классов и экземпляров классов.
- •6. Описание классов(class, struct).
- •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. Файлы последовательного доступа и произвольного доступа.
- •34. Основы обработки исключений в с#. Генерация исключений.
5. Понятие классов и экземпляров классов.
То обстоятельство, что объекты классов доступны по ссылке, объясняет, почему классы называются ссылочными типами. Главное отличие типов значений от ссылочных типов заключается в том, что именно содержит переменная каждого из этих типов. Так, переменная типа значения содержит конкретное значение, а ссылочная переменная содержит не сам объект, а лишь ссылку на него.
Класс – это абстрактный тип данных. Другими словами, класс – это некоторый шаблон, на основе которого будут создаваться его экземпляры –объекты. В Си-шарп классы объявляются с помощью ключевого слова class. Общая структура объявления выглядит следующим образом: [модификатор доступа]class[имя_класса]{//тело класса} Модификаторов доступа для классов есть два: - public – доступ к классу возможен из любого места одной сборки либо из другой сборки, на которую есть ссылка; - internal – доступ к классу возможен только из сборки, в которой он объявлен.
Члены класса Классы в Си-шарп могут содержать следующие члены:- поля;- константы;- свойства;- конструкторы;- методы;- события;- операторы;- индексаторы;- вложенные типы. Все члены класса, как и сам класс, имеют свой уровень доступа. Только у членов их может быть уже пять: - public – доступ к члену возможен из любого места одной сборки, либо из другой сборки, на которую есть ссылка; - protected – доступ к члену возможен только внутри класса, либо в классе-наследнике (при наследовании); - internal – доступ к члену возможен только из сборки, в которой он объявлен; - private – доступ к члену возможен только внутри класса; - protected internal - доступ к члену возможен из одной сборки, либо из класса-наследника другой сборки. Не указав модификатор доступа для члена, по умолчанию ему будет присвоен режим private.
6. Описание классов(class, struct).
Классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке (Пример)
Структура подобна классу, но относится к типу значения, а не к ссылочному типу данных. Т.е. структуры отличаются от классов тем, как они сохраняются в памяти и как к ним осуществляется доступ (классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке), а также некоторыми свойствами (например, структуры не поддерживают наследование). Из соображений производительности вы будете использовать структуры для небольших типов данных. Однако в отношении синтаксиса структуры очень похожи на классы.
Главное отличие состоит в том, что при их объявлении используется ключевое слово struct вместо class. Ниже приведена общая форма объявления структуры:
struct имя : интерфейсы {
// объявления членов}
где имя обозначает конкретное имя структуры.
Как и у классов, у каждой структуры имеются свои члены: методы, поля, индексаторы, свойства, операторные методы и события. В структурах допускается также определять конструкторы, но не деструкторы. В то же время для структуры нельзя определить конструктор, используемый по умолчанию (т.е. конструктор без параметров). Дело в том, что конструктор, вызываемый по умолчанию, определяется для всех структур автоматически и не подлежит изменению. Такой конструктор инициализирует поля структуры значениями, задаваемыми по умолчанию. А поскольку структуры не поддерживают наследование, то их члены нельзя указывать как abstract, virtual или protected.
