Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
attachment_1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
397.82 Кб
Скачать

16. Управление видимостью членов класса и доступам к элементам объекта.

Уровни доступа к базовому классу

Те же ключевые слова private, public и protected используются для указания уровня доступа к базовому классу. До этого мы писали:

class Employee: public Person

и выше говорилось, что в этом случае у производного класса будет доступ к публичным полям и методам базового класса. Такой тип наследования можно назвать открытым. В случае закрытого (private) и защищјнного (protected) наследования ситуация будет другой, что показано

в таблице:

Class C

{

private:

int a;

protected:

int b;

public:

int c;

};

Class C1: public C

{

недоступно

доступно как protected

доступно как

public

};

Class C2: protected C

{

недоступно

доступно как protected

доступно как

protected

};

Class C3: private C

{

недоступно

доступно как

private

доступно как

private

};

Легко запомнить правило: приватные члены базового класса в производных классах недоступны; остальные члены доступны с минимальным из двух уровней доступа: их уровня доступа в базовом классе и уровня доступа к базовому классу при наследовании. Если уровень доступа к базовому классу не указан, то для структур по умолчанию используется уровень public, а для классов private.

17. Ссылка на себя //this

В функции-члене можно непосредственно использовать имена членов того объекта, для которого она была вызвана:

class X {

int m;

public:

int readm() { return m; }

};

void f(X aa, X bb)

{

int a = aa.readm();

int b = bb.readm();

// ...

}

При первом вызове readm() m обозначает aa.m, а при втором - bb.m.

У функции-члена есть дополнительный скрытый параметр, являющийся указателем на объект, для которого вызывалась функция. Можно явно использовать этот скрытый параметр под именем this. Считается, что в каждой функции-члене класса X указатель this описан неявно как

X *const this;

и инициализируется, чтобы указывать на объект, для которого функция-член вызывалась. Этот указатель нельзя изменять, поскольку он постоянный (*const). Явно описать его тоже нельзя, т.к. this - это служебное слово. Можно дать эквивалентное описание класса X:

class X {

int m;

public:

int readm() { return this->m; }

};

Для обращения к членам использовать this излишне. В основном this используется в функциях-членах, непосредственно работающих с указателями.

18. Освобождение памяти от лишних объектов

delete и ну ты понел.

19. Порядок выполнения конструкторов и деструкторов

Конструкторы при инициализации (создание).

Деструкторы при деинициализации (уничтожение).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]