Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2018-01-03 | 625 |
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.
|
|
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!