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

1 ... 32 33 34 [ 35 ] 36 37 38 ... 227


for(i=0; i<4; i++) [

cout ob[i] [0] .get a()

cout ob[i] [0].get b() \n ;

cout ob[i] [l].get a() ;

cout ob[i] [l].get b() \n ;

cout \n ; return 0;

В этом примере конструктор samp имеет два аргумента. Здесь массив ob объявляется и инициализируется в функции main() с помощью прямых вызовов конструктора samp. Эт одимо, поскольку формальный синтаксис С++ одновременное использование только одного аргумента в разделяе-

Эта программа выводит на экран следующее: . :

1 2 :

3 4.. 5 б 7 8

4. Как вы знаете, конструктор может иметь более одного аргумента. При инициализации массива объектов с таким конструктором вы должны использовать упоминавшуюся ранее альтернативную форму инициализации. Начнем с примера:

ttinclude <iostream>

using namespace std; - .

class samp (

int a, b; public:

sam nt n, in ra) { a n; b m; } int get a() { return a; } int get b() { return b; }

int main ( )

samp ob [4] [2] =

sampd, 2), samp(3, 4),

samp (5, €), samp (7, 8), У;

sampO, 10), samp (11, 12),

sarapiia, 14) , sampdS, 16) ,

}; . .

int i;



/12 Самоучитель С++

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


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

Предыдущая программа выводит на экран следующее:

123 4 5 6 7 8

9 10 . ..

11 12

13 14 . -

15 16

Упражнения

1. Используя следующее объявление класса, создайте массив из 10 элементов и инициализируйте переменную ch значениями от А до J. Покажите, что массив на самом деле содержит эти значения.

#include <iostream>

using namespace std; , ,

class letters { -

char ch; public:

letters (char c) { ch }

cha ch () { return ch; }

2. Используя следующее объявление создайте массив из 10 элементов,

инициализируйте переменную значениями от 1 до 10, а переменную sqr - квадратом num.

#include <iostreaiti> л

using namespace std; - -4- ;



class squares { int num, sqr;

public:

squares(int a.

int b) { num

void show() {cout

a; sqr = b; }

3. Измените инициализацию переменной ch из упражнения 1 так, чтобы использовать ее длинную форму (т. е. чтобы конструктор letters явно вызывался

в списке инициализации).

4.2. Использование указателей на объекты

Как отмечалось в главе 2, доступ к объекту можно получить через указатель на этот объект. Как вы знаете, при использовании указателя на объект к членам объекта обращаются не с помощью оператора точка (.), а с помощью оператора стрелка (->).

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

он начинает указывать на предыдущий объект.

Примеры

1. Пример арифметики указателей на объект!;

Указатели на объекты lincludi; <j.odLieano-usin espace std;

class samp (

int a, b;

public: -

samp (int n, int m)

int get a()

in b()

{ a return a; return b;

n; }

int mam ()

samp

samp(1, 2),

I.

m; }

i



1 ... 32 33 34 [ 35 ] 36 37 38 ... 227

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