У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа.html

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

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

class Example{  //вспомогательный класс

Example(int i, float f){…}// конструктор

}

class Test{

 char* ptr;

 Example field; //определяем поле-объект класса Example

}

Чтобы создать объект класса Test, нужно выполнить его конструктор, в котором нужно инициализировать поле-объект field. А для этого нужно вызывать конструктор класса Example.

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

Конструктор класса Test может быть определен следующим образом:

 Test(int w, char *pt, float t): field(w,t) {

  ptr=pt;

       ...}

Этот синтаксис похож на инициализацию константных полей, только значений может быть несколько, по числу аргументов конструктора вспомогательного класса.

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

Очевидно, что при разрушении объекта класса Test, помимо деструктора этого класса также потребуется вызов и деструктора класса Example.

 Замечание

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

ЗАДАНИЕ 3 (порядок вызова конструкторов и деструкторов)

Чтобы определить порядок вызова конструкторов и деструкторов, эти функции-члены классов выводят на экран сообщения о своем вызове.

  1.  Описать два класса Inner1 и Inner2, имеющих по одному полю типа int и по два конструктора: один без параметров, а другой — с параметром для инициализации поля данных.
  2.  В каждом конструкторе предусмотреть вывод на экран соответствующего ему сообщения типа: "Конструктор с параметром класса Inner1"
  3.  Описать класс (class) Test, в котором имеется одно поле данных a1 типа Inner1. Создать два конструктора для класса Test (без параметров и с одним параметром int), которые выдают на экран сообщения об их вызове. Параметр конструктора использовать для инициализации поля a1.
  4.  В описание каждого класса (Test, Inner1, Inner2) добавить деструктор, в котором выводится сообщения, что вызван деструктор для объекта данного класса.
  5.   В функции main описать объект типа Test, инициализируемый произвольным целым значением. Изучить порядок вызова конструкторов и деструкторов, применяя по очереди два способа инициализации поля a1: традиционный (в теле конструктора) и новый (вне тела).
  6.   Изменить описание класса Test, добавив второе поле данных a2 типа Inner2. Изменить конструктор с параметром: его аргумент использовать для инициализации одинаковым значением полей a1 и a2.
  7.  В новой функции main описать неинициализированную переменную X типа Test и запустить программу. Какие конструкторы вызваны, в каком порядке? В каком порядке вызваны деструкторы?
  8.  В новой функции main описать переменную y типа Test, которая инициализируется некоторым значением (например, 1). Запустить программу. Какие конструкторы вызваны, в каком порядке? В каком порядке вызваны деструкторы?
  9.  Внести изменения в описание класса Test: поменять местами порядок описания полей a1 и a2. При условиях пункта 4 запустить программу и выяснить, как изменился порядок вызова конструкторов и деструкторов. Вернуть порядок старый описаний и поменять порядок инициализации полей a1 и a2 в конструкторе. Влияет ли этот порядок на вызов конструкторов и деструкторов?
  10.  Учитывая результаты пп. 3 – 5, сформулировать правила вызовов конструкторов и деструкторов для классов, с "вложенными" в них объектами других классов.

Вопросы для контроля

1. В чем различие разделов private и public в описании класса?

2. В чем проблема использования константных полей и как она решается?

3. Когда при наличии перегружаемых функций может возникнуть конфликт?

4. Могут ли все аргументы функции иметь значения по умолчанию?

5. Какие особенности синтаксиса имеют конструкторы и деструкторы?

6. Как инициализируются поля-объекты?

7. Если в программе определены несколько объектов класса, причем часть на глобальном уровне, а часть — внутри функции, то, в каком порядке будут вызываться конструкторы и деструкторы?




1. Основы термодинамики
2. Задание 1 Создайте новую пустую базу данных
3. Для интеграции этих данных и построения единой целостной системы привлекается философия со своими методам
4. Дипломная работа- Історичний розвиток естетичного вчення
5. Аудит операций по учету расчетов с подотчетными лицами
6. 20 року слідчий посада найменування органу ініціали
7. Толерантность между переселенцами и местным сообществом как принцип социальной работы с мигрантами
8. Уваровщинская средняя общеобразовательная школа Кирсановского района Тамбовской области
9. Пахотной земли в этих гористых местах немного и использовалась она в основном для выращивания главного про
10. Келли; Автором теории когнитивного диссонанса является Л
11. РЕФЕРАТ дисертації на здобуття вченого ступеня кандидата технічних наук Одеса 2000 Дисерт
12. Mil Танцевальные дисциплины- Номинация соло д
13. Китч не-искусство не-элиты Этимология и история понятия
14. Расчет платежей за потребление природных ресурсов в условиях предприятия по добыче огнеупорной глины открытым способом разработки
15. Перечислите признаки классификации текстильных волокон
16. Информатика специальность- 080115 Таможенное дело 2 курс Информатика информационные процессы
17. Методы исследования Гистохимический метод
18. ПАРТИИ ВЛАСТИ НАКАНУНЕ И В ПЕРИОД ПРЕДВЫБОРНОЙ КАМПАНИИ В СОБРАНИЕ ДЕПУТАТОВ Г
19. Очищення води за допомогою озонування
20. цукрі у відповідності з фізіологічними науковообгрунтованими нормами його споживання ~ 38 кг- душу населенн.