Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы все_001.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
238.59 Кб
Скачать
  1. Область видимости объектов, скрытие имен.

При наследовании члены базового класса становятся членами производного класса. Область видимости объектов(членов) базового класса в производном определяется спецификатором доступа, указываемом при создании производного класса. Спецификатор выражается одним из слов: public, private, protected.

- Если базовый класс наследуется как public-класс, то все его public-члены становятся public-членами.

- Во всех случаях private-члены остаются закрытыми в рамках этого класса и не доступны для объектов производного класса.

Модификатор прав доступа используется для изменения доступа к наследуемым объектам в соответствии с правилами, указанными в таблице 1.

Таблица 1 – Доступ в классах при наследовании

Доступ в базовом классе

Модификатор прав доступа

Доступ в производном классе

private

private

не доступны

private

public

не доступны

protected

private

private

protected

public

protected

public

private

private

public

public

public

  1. Динамическая память, функции работы с памятью.

Динамическая память – это память, полученная программой во время ее выполнения. Динамическая память выделяется из раздела свободной памяти, расположенной между программой и стеком.

Язык С не содержит операторов для работы с динамической памятью new и delete. Поэтому для совместимости с языком С в языке С++ используются функции malloc() и free() .

Функция malloc() предназначена для выделения динамической памяти.

Void *malloc (num_bytes); Функция возвращает указатель типа void.

Функция free() предназначена для освобождения динамической памяти.

Void free(void *ptr);

  1. Динамическая память, операции работы с памятью.

Динамическая память – это память, полученная программой во время ее выполнения. Динамическая память выделяется из раздела свободной памяти, расположенной между программой и стеком.

Оператор new позволяет динамически выделить область памяти.

Формат оператора:

переменная_указатель = new тип переменной;

Оператор delete освобождает ранее выделенную динамическую память.

Формат оператора:

delete переменная_указатель ;

  1. Ссылки в С++. Отличие ссылок от переменных-указателей.

-----Понятие ссылки возникло в связи с необходимостью передачи аргументов в функцию(процедуру, метод). Есть два метода :

- передача аргументов по значению; Код функции не может изменить аргументы, используемые при вызове/

- передача аргументов по ссылке. Код функции может изменить аргументы, используемые при вызове.

В случае передачи аргументов по ссылке, в параметр функции копируется адрес аргумента,

а не его значение. Такая возможность реализуется с помощью ссылочного параметра функции. Ссылочный параметр объявляется с помощью символа &

Объявляется функция, например, f(int &x, int &y); Вызывается - f(i,j)

Отличие: ссылка содержит адрес конкретной переменной, а переменной-указателю можно присваивать адреса разных(однотипных) переменных.

------!!! « Передачу аргументов по ссылке» можно реализовать искусственно через «передачу аргументов по значению» используя переменные-указатели, т.е.

при описании функции указать, что аргументом будет указатель, например, f(int *i), а при вызове функции в аргумент поместить указатель на передаваемое значение. Например,

f(p), где p =&j

!!! При применении ссылочных переменных есть ряд ограничений:

- нельзя ссылаться на ссылочную переменную;

- нельзя создавать массив ссылок;

- нельзя создавать указатель на ссылку,т.е. нельзя применить оператор &;

- ссылки не разрешено использовать для битовых полей структур.