Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Области доступности элементов класса




Данные-члены (поля) – набор взаимосвязанной информации, возможно различных типов, объединённых в один объект.

Данные-члены могут:

1) находиться в public, private, protected частях класса.

2) могут иметь статический класс памяти (static). Такие поля определяются в единственном экземпляре для всего класса, а не для каждого его объекта.

3) могут быть объявлены как const. Константные данные должны быть инициализированы в каждом определении конструктора. Имена полей, и начальные значения заключаются в скобки, отделяются от списка аргументов конструктора двоеточием.

4) могут быть переменными другого класса.

Инициализация полей при описании не допускается.

Классы

Могут быть глобальными (объявленными вне любого блока) и локальными (объявленными внутри блока – функции или другого класса)

Локальные классы

1) не могут иметь статических элементов;

2) методы этих классов могут быть описаны только внутри класса;

Внутри него можно использовать типы, статические и внешние переменные, внешние функции и элементы перечислений из области, в которой он описан, запрещается использовать автоматические переменные из этой области.

24.5. Функции-члены (методы класса) – функции, которые манипулируют данными-членами класса.

Функции-члены:

1)Имеют доступ ко всем полям своего класса.

2)могут быть в public, protected, private части класса.

3)могут быть определены внутри или вне объявления класса.

4)могут обращаться к полям или методам, объявленным после них.

5)имеют неявно объявленную переменную (указатель) this (он неявно используется внутри метода для ссылок на элементы объекта. Его явное указание целесообразно в случае, когда метод возвращает указатель или ссылку на вызвавший его объект, или имеется конфликт имен (когда имя поля класса совпадает с именем формального параметра метода)).

6)могут быть static.

7)могут быть объявлены как const (но не могут быть статическими)

8)могут быть виртуальными (но не могут быть статическими)

Статические и нестатические члены класса.

Статические элементы класса

С помощью модификатора static можно описать статические поля и методы класса. Их можно рассматривать как глобальные переменные или функции, доступные только в пределах области класса.

Нестатические же члены класса объявляются лишь как указатели или ссылки на объект своего класса.

Статические методы

Статические методы предназначены для обращения к статическим полям класса. Могут обращаться непосредственно только к статическим полям и вызывать только другие статические методы класса, потому что им не передается скрытый указатель this.

Эти методы не могут быть константными и виртуальными.

Использование статического метода

class A {

private:

Static int count;

Public

static void inccount(){count++};

};

A::int count;

void f(){

A a;

//a.count++;//так нельзя!!!!

a.inccount; //так можно

Константные и статические поля.

Статические поля

Поля класса могут быть объявлены как статические. Объявление поля с атрибутом static не является его определением – это поле (с помощью оператора расширения области видимости) должно быть определено дополнительно, и при этом можно задать начальное значение этого поля. Статическое поле может быть изменено либо с помощью статических методов, либо с помощью механизма инициализаторов (по крайней мере в системе программирования Microsoft Visual Studio).

Константные поля

Поля класса могут быть описаны как константные. Значение константного поля для вновь создаваемого объекта может быть задано в момент работы конструктора и в дальнейшем не может быть изменено. Занесение значений константных полей выполняется через механизм инициализаторов, например:

class MyClass {

Const int ID;

public:

MyClass(aID): ID(aID) { … }

Обратите внимание, что следующая строка неверна, т.к. в ней не используются инициализаторы:

MyClass(aID) {ID = aID; … }

Константные методы.

Константный объект

Значения полей такого объекта изменять запрещается. К нему применяются только константные методы.

Константный метод

1)объявляется с ключевым словом const после списка параметров;

2)не может изменять значения полей класса;

3)может вызывать только константные методы;

4)может вызываться для любых (не только константных методов).

Преимущество константного метода: дополнительный контроль компилятора в функциях, в которых объект передаётся по константной ссылке.





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 376 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2283 - | 2213 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.