Константные функции-члены
Нестатические функции-члены (и только они) могут иметь описатель const
class Array
{
...
inline double operator[] (int n) const;
Такие функции не имеют права изменять поля класса (кроме полей, определённых как mutable). Если они пытаются это сделать, компилятор должен выдать сообщение об ошибке.
7. C++. Инкапсуляция. Объявление области видимости
Основным способом организации информации в Си++ являются классы. В отличие от типаструктура (struct) языка Си, которая может состоять только из полей и вложенных типов, класс (class) Си++ может состоять из полей, вложенных типов и функций-членов (member functions). Члены класса бывают публичными (открытыми, public), защищёнными (protected) и собственными (закрытыми, приватными, private). В Си++ тип структура аналогичен типу класс, отличие в том, что по умолчанию члены и базовые классы у структуры публичные, а у класса — собственные.
С открытыми (публичными) членами класса можно делать снаружи класса всё, что угодно. К закрытым (приватным) членам нельзя обращаться извне класса, чтобы не нарушить целостность данных класса. Попытка такого обращения вызовет ошибку компиляции. К таким членам могут обращаться только функции-члены класса (а также так называемые функции-друзья и функции-члены классов-друзей; о понятии друзей в C++ см. ниже). Помимо открытых и закрытых членов класса, могут быть ещё и защищённые — это члены, доступные содержащему их классу, его друзьям, а также производным от него классам. Такая защита членов называется инкапсуляцией.
Используя инкапсуляцию, автор класса может защитить свои данные от некорректного использования. Кроме того, она задумывалась для облегчения совместной разработки классов. Имелось в виду, что при изменении способа хранения данных, если они объявлены как защищённые или собственные, не требуется соответствующих изменений в классах, которые используют изменённый класс. Например, если в старой версии класса данные хранились в виде линейного списка, а в новой версии — в виде дерева, те классы, которые были написаны до изменения формата хранения данных, переписывать не потребуется, если данные были приватными или защищёнными (в последнем случае — если использующие классы не были классами-наследниками), так как ни один из них этих классов не мог бы напрямую обращаться к данным, а только через стандартные функции, которые в новой версии должны уже корректно работать с новым форматом данных. Даже оператор доступаoperator [] может быть определён как такая стандартная функция.
8. C++. Полиморфизм. Перегрузка операций и методов.
Полиморфизм реализуется с помощью наследования классов и виртуальных функций. Класс-потомок наследует сигнатуры методов класса-родителя, а реализация, в результате переопределения метода, этих методов может быть другой, соответствующей специфике класса-потомка. Другие функции могут работать с объектом как с экземпляром класса-родителя, но если при этом объект на самом деле является экземпляром класса-потомка, то во время исполнения будет вызван метод, переопределенный в классе-потомке. Это называется поздним связыванием. [Примером использования может служить обработка массива, содержащего экземпляры как класса-родителя, так и класса-потомка: очевидно, что такой массив может быть объявлен только как массив типа класса-родителя и у объектов массива могут вызываться только методы этого класса, но если в классе-потомке какие-то методы были переопределены, то в режиме исполнения для экземпляров этого класса будут вызваны именно они, а не методы класса-родителя.]
Класс-потомок сам может быть родителем. Это позволяет строить сложные схемы наследования — древовидные или сетевидные.
Абстрактные (или чисто виртуальные) методы не имеют реализации вообще (на самом деле некоторые языки, например C++, допускают реализацию абстрактных методов в родительском классе). Они специально предназначены для наследования. Их реализация должна быть определена в классах-потомках.
Класс может наследовать функциональность от нескольких классов. Это называется множественным наследованием. Множественное наследование создаёт известную проблему (в C++), когда класс наследуется от нескольких классов-посредников, которые в свою очередь наследуются от одного класса (так называемая «Проблема ромба»): если метод общего предка был переопределён в посредниках, неизвестно, какую реализацию метода должен наследовать общий потомок. Решается эта проблема через виртуальное наследование (C++).
9. C++. Наследование. Ограничения при наследовании.
class A{ //базовый класс
};
class B : public A{ //public наследование
};
class C : protected A{ //protected наследование
};
class Z : private A{ //private наследование
};
В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:
Если класс объявлен как базовый для другого класса со спецификатором доступа public, тогда public члены базового класса доступны как public члены производного класса, protected члены базового класса доступны как protected члены производного класса.
Если класс объявлен как базовый для другого класса со спецификатором доступа protected, тогда public и protected члены базового класса доступны как protected члены производного класса.
Если класс объявлен как базовый для другого класса со спецификатором доступа private, тогда public и protected члены базового класса доступны как private члены производного класса.
- 2. Основы технологии формообразования отливок из черных и цветных сплавов.
- 3. Основы технологии формообразования поковок, штамповок, листовых оболочек.
- 4. Выбор способа получения штамповок
- 5. Основы технологии формообразования сварных конструкций из различных сплавов. Понятие о технологичности заготовок.
- 6. Пайка материалов.
- 7. Основы технологии формообразования поверхностей деталей механической обработкой, электрофизическими и электрохимическими способами обработки.
- 8. Понятие о технологичности деталей.
- 1 Закономерности и связи, проявляющиеся в процессе проектирования и создания машин.
- Методы разработки технологического процесса изготовления машины.
- 3. Принципы построения производственного процесса изготовления машины.
- 4. Технология сборки.
- 5. Разработка технологического процесса изготовления деталей.
- 1.Основы проектирования механизмов. Стадии разработки.
- 2. Критерии работоспособности машин. Принцип расчёта деталей, подверженных износу.
- 3. Механические передачи
- 5. Подшипники качения и скольжения.
- Классификация по конструктивным признакам
- 6. Соединения деталей
- 7. Муфты механических приводов
- 1.Принципы технического регулирования.
- 2. Технические регламенты.
- 3. Стандартизация.
- 4. Подтверждение соответствия.
- 5. Государственный контроль (надзор) за соблюдением требований технических регламентов.
- 6.Метрология. Прямые и косвенные измерения.
- 2. Системы счисления. Представление чисел в позиционных и непозиционных системах
- 3. Системы счисления. Перевод чисел из одной системы счисления в другую.
- 4. Представление чисел в эвм.
- 5. Принципы организации вычислительного процесса. Алгоритм Фон-Неймана.
- 6. Принципы организации вычислительного процесса. Гарвардская архитектура эвм.
- 7 Архитектура и устройство базовой эвм.
- 8 Адресация оперативной памяти. Сегментные регистры.
- 9 Система команд процессора i32. Способы адресации.
- 10 Система команд процессора i32. Машинная обработка. Байт способа адресации.
- 11 Разветвляющий вычислительный процесс.
- 12 Циклический вычислительный процесс
- 13 Рекурсивный вычислительный процесс.
- 8 Функции процессора, памяти, устройств ввода-вывода. Функции процессора
- Методы адресации
- 11. Базовый функциональный блок микроконтроллера включает:
- 15. Модули последовательного ввода/вывода
- 20. Dsp/bios
- 21. Xdias
- 22. Программируемый логический контроллер
- 23. Языки программирования логических контроллеров
- 2.Биполярный транзистор.
- 3. Полевой транзистор
- 4. Управление силовыми транзисторами
- 5. Цепи формирования траектории рабочей точки транзистора
- 6. Цфтрт с рекуперацией энергии
- 7. Последовательное соединение приборов
- 8. Параллельное соединение приборов.
- 9. Защита силовых приборов от сверхтока.
- 10. Защита силовых приборов от перенапряжения.
- 11. Расчет драйвера igbt-транзистора.
- Трансформаторы.
- 2. Машины постоянного тока.
- 3. Асинхронные и синхронные машины.
- 4. Элементная база современных электронных устройств.
- 5. Усилители электрических сигналов.
- 6. Основы цифровой электроники.
- 4. Объектно-ориентированное программирование.
- Описание функций в теле класса
- Константные функции-члены