Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Основное различие между классами С++ и структурами С состоит в правилах доступа к их элементам. Элементы структуры языка С доступны для любого выражения или функции из их области действия. В С++ имеется возможность управления правами доступа к элементам структуры, объединения или класса. Элементы класса получают атрибуты доступа либо по умолчанию, либо при использовании спецификаторов доступа, которые имеют следующие наименования и значения:
public (общий, открытый) – элемент может быть использован любой функцией;
private (частный, закрытый) – элемент доступен только методам класса и "друзьями " класса, в котором они объявлены;
protected (защищенный) – то же, что и private, однако элемент может быть использован методами и друзьями классов, производных от объявленного класса, но только в объектах производного класса.
Когда говорят о классах в С++, то включают в это понятие не только тип данных class, но также struct и union со своими правами доступа.
Для типа class все компоненты являются по умолчанию private, но можно изменить уровень доступа; для типа ctruct все компоненты по умолчанию — public, но можно изменить права доступа; для типа union все компоненты по умолчанию — public и этот уровень не может быть изменен.
Обычно ограничения на уровень доступа касаются элементов данных: как правило, данные имеют атрибут private, а методы – public. Этим ограничениям больше соответствует класс с ключевым словом class, который и используется для разработки классов в программах.
Режим доступа (по умолчанию или заданный) действует для последующих объявлений элементов класса, пока не встретится другой атрибут доступа в любом порядке, например:
class X // заголовок класса
{ int i; // private по умолчанию
char ch;
public: // общий
int j, k;
protected: // защищенный
int m;
}; // определение класса заканчивается точкой с запятой (;)
Список элементов класса
Список элементов представляет собой последовательность объявлений данных (любого типа, включая нумераторы, битовые поля и другие классы) и объявлений и определений функций, каждое из которых может иметь необязательные модификаторы доступа. Определенные таким образом объекты называют элементами (членами) класса (class members). Спецификаторы класса памяти auto, register, extern недопустимы. Элементы могут быть объявлены со спецификатором static.
Функция-элемент класса называется методом класса, а функция с модификатором friend называется дружественной функцией. Данные класса – это то, что класс "знает " (пассивная часть класса), а методы – это то, что класс "умеет делать" (активная часть).
Определение методов класса
Существует два способа включения метода в класс.
Первый способ – метод может быть определен внутри класса как встраиваемая функция с одним-двумя операторами. Компилятор осуществляет макрорасширение таких функций, снижая накладные расходы, связанные с обращением к функции и выходом из нее, например:
class Point
{ int X, Y;
int Getx() { return X; } // встроенная функция
}
Второй способ – объявление метода внутри класса в виде прототипа функции и определение метода в произвольном месте программы с помощью операции определения области действия функции :: (два двоеточия), например:
class Point
{ int X, Y;
int Getx(); // объявление метода
}
int Point:: Getx() // определение метода
{ return X; } // вне класса
Имя Point:: Getx называется полным или квалифицированным именем метода класса. В С++ разные функции могут иметь функции с одинаковыми именами. Операция:: и имя класса позволяют компилятору определить принадлежность функции конкретному классу.
Определение метода внутри класса (способ 1) не требует модификатора Point::, так как и так очевидно, что Getx принадлежит классу Point. Кроме того, модификатор Point:: перед Getx служит и другой цели. Он определяет, что переменная Х в операторе return X является собственным элементом класса Point, к которому можно обращаться непосредственно по имени.
Вывод. Тело метода Point::Getx() находится внутри области действия класса Point вне зависимости от физического расположения. Метод Getx() имеет доступ ко всем внутренним переменным класса Point.
|
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!