Программирование >>  Расширенная версия языка c++ 

1 ... 12 13 14 [ 15 ] 16 17 18 ... 227


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;



1 ... 12 13 14 [ 15 ] 16 17 18 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика