- •Какие новые синтаксические элементы появились в объектно-ориентированных языках программирования? Приведите примеры (умк);
- •1)Декларации классов и объектов (и все, что с ними связано);
- •7)Механизм обработки исключений.
- •Языковые средства описания классов и объектов (умк);
- •Int value;
- •Int get_value(void){ return value; }
- •Int last_value(void);
- •Иерархия классов (умк);
- •Способы создания и разрушения объектов (умк);
- •Void out(void){ puts(p); }
- •Void main(){
Int value;
public:
example(){ value=1; }
protected:
Int get_value(void){ return value; }
private:
Int last_value(void);
};
Модификатор доступа действителен для всех членов класса, которые расположены после него, до момента появления следующего модификатора доступа. Модификаторы доступа не могут комбинироваться. Модификатор доступа может быть неоднократно использован в описании класса. По умолчанию действует модификатор доступа private. Назначение модификаторов доступа раскрывает следующая таблица:
Атрибут доступа |
Значение |
public |
Можно использовать как внутри класса, так и вне. Доступ извне осуществляется через имя объекта и оператор расширения области видимости. |
private |
Доступ только в пределах данного класса и классов друзей. |
protected |
Доступ внутри класса, его друзей, а также внутри классов наследников и их друзей. |
При создании класса часть его членов "прячется" с помощью атрибута доступа private, оставляя возможность манипуляции только с членами класса, описанными как public. Доступ внутри класса означает, что внутри тела какой-либо функции-члена класса другие члены этого же класса (данные или функции) являются доступными.
Данные-члены:
могут быть описаны как static; статические члены класса не копируются при создании объекта, а остаются в единственном экземпляре для всех объектов; статические члены не могут быть описаны как auto, register или extern;
могут быть описаны как const; такие члены класса могут быть инициализированы только один раз и после этого больше не могут быть изменены;
могут быть описаны как mutable; изменяемые, даже если объект описан как const;
могут быть описаны как volatile; изменяемые;
инициализируются конструктором и уничтожаются деструктором.
Функции-члены:
могут быть описаны как static; статические функции могут манипулировать статическими данными, не могут быть описаны как const или virtual;
могут быть описаны как const; не могут изменять значения данных и могут возвращать ссылку или указатель на данные, описанные как const. Только такие функции могут вызываться у объекта-константы;
могут быть описаны как volatile; только они могут вызываться для volatile объекта;
могут быть описаны как virtual;
могут быть описаны как inline;
могут быть перегружены только функциями-членами того же класса;
имеют доступ ко всем данным-членам класса;
представляют единственную возможность доступа к private-членам своего класса;
могут быть определены как внутри (аналог inline), так и вне класса;
Пример определения функций-членов класса:
class example : public base_example {
int value;
public:
example() { value=1; }
int get_value(void) { return value; }
int last_value(void);
};
inline int example::last_value(void) {
value=0;
return value;
}
Доступ к элементам класса T извне возможен только через объект класса T в совокупности с соответствующим оператором (".", "->"). Внутри методов класса при обращении к тем или иным членам класса (методам или атрибутам) всегда предполагается специальный указатель. Этот специальный указатель можно использовать и явно – это this. При каждом вызове функции-члена this автоматически (неявно) передается в вызываемую функцию (за исключением статических функций).