|
Программирование >> Расширенная версия языка c++
1. Измените клас еие (см. упражнения гл. 1) так, чтобы провести инициализацию с помощью конструктора. 2. Создайте класс stopwatch для имитации секундомера. Используйте конструктор для начальной установки секундомера в 0. Образуйте две функции-члена start() и stopO соответственно для запуска и остановки секундомера. Включите в класс и функцию-член show() для вывода на экран величины истекшего промежутка времени. Также используйте деструктор для автоматического вывода на экран времени, прошедшего с момента создания объекта класса stopwatch, до его удаления. (Для простоты время приведите в секундах.) 3. Что неправильно в конструкторе, показанном в следующем фрагменте? class sample { ; ) . double a, b, с; , =j public: double le(); бка, почему? 2.2. Конструкторы с параметрами Конструктору можно передавать аргументы. Для этого просто добавьте необходимые параметры в объявление и определение конструктора. Затем при объявлении объекта задайте параметры в качестве аргументов. Чтобы по-как это делается, начнем с короткого примера: tinclude <iostream> using namespace std; class myclass ( int a; public: myclass (int x) ; конструктор !- - >; myclass::myclass(int x) cou << В конструкторе\n f a = x; void myclass::show0 { . cout a \n ; :- В отличие уктора деструктор не может иметь параметров. Смысл этого понять достаточно просто: отсутствует механизм передачи аргументов удаленному объекту. Примеры 1. Вполне допустимо передавать конструктору несколько аргументов. В этом примере конструктору myclassO передается два аргумента: ttinclude <ioSwream> using namespace std; class myclass { int a, b; public: myclass (int x, in y) ; конструктор void show () ; int main О myclass ob(4); ob.showO; , return 0; . V } Здесь конструктор класса myclass имеет один параметр. Значение, передаваемое в myclassO, используется для инициализации переменной а. Обратите особое внимание на то, как в функции main() объявляется объект ob. Число 4, записанное в круглых скобках, является аргументом, передаваемым параметру х конструктора ass(), который используется для инициализации переменной а. Фактически синтаксис передачи аргумента конструктору с параметром является сокращенной формой записи следующего, более длинного выражения: myclass ob = myclass (4) ; Однако большинство программистов C++ пользуются сокращенной формой записи. На самом деле, с технической точки зрения между этими двумя формами записи имеется небольшое отличие, связанное с конструктором копий (copy constructor), о котором будет рассказано позже. На данном этапе об этом отличии можно не беспокоиться. Здесь 4 передается в х, а 7 передается в у. Такой же общий подход используется для передачи любого необходимого числа аргументов (ограниченного, разумеется, возможностями компилятора). 2. Здесь представлена следующая версия класса stack, в котором конструктор с параметром используется для присвоения стеку имени . Это односимвольное имя необходимо для идентификации стека в случае возникновения ошибки. . #include <iostream> using namespace std; ttdefine SIZE 10 Объявление класса stack для символов class stack { cha M3I2E]; содержит стек int tos; индекс вершины стека char who; идентифицирует стек , public: stack(cha); конструктор voi ar ch) ; помещает в стек символ cha (); выталкивает из стека символ Инициализация стека stack: :stack(char с) i tos = 0; - !-.. - - who = с; myclass::myclass(int х, int у) cou< В конструкторе\n ; а = х; ь - у; -,-oid myclass :: show () cou< < b \n ; int main ( ) myclass ob ( 4, 7) ; ob.show(); return 0;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |