Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2018-01-03 | 626 |
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.
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!