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

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


public:

void set-sumdnt n) ; . - .

. void show sun4) (

cou суа чисел мзщих << num

voi :set sum{int n) {

int i ; num = n;

. :- - . <

sum = 0; .. r- . . .

for(i=l; i<=n; i++) ,

sum += i; ,

I .: i : - . - I-\r X.

6. В предыдущем вопросе функции suin() не бхла определена как встраиваемая в объявлении класса summation. Объясните, почему это необходимо для некоторых компиляторов?

7. Дан следующий класс, покажите, как добавить дружественную функцию isnegO, которая получает один параметр типа myclass и возвращает true, если значение num отрицательно и false - в противном случае.

class myclass { .

int num; J..

public:

myclass (int {num = x; }

8. Может ли дружественная функция быть дружественной более чем одному

классу?

4.1. Массивы объектов

Как уже отмечалось ее. объекты - это переменные, и они имеют те же возможности и признаки, что и переменные любых других типов. Поэтому вполне допустимо упаковывать объекты в массив. Синтаксис объявления массива объектов совершенно аналогичен тому, который используется для объявления массива переменных любого другого типа. Более того, доступ к массивам объектов совершенно аналогичен доступу к массивам переменных любого другого типа.




1. Пример массива объектов:

ttinclude <iostream>

using namespace std;

class samp {

int a;

public:

voi a(int n) ( a = n; } int get a{) { return a; } .

int mainO . ... , ....

t . . -

samp ob[4]; . ., . ,.....-

int i;

for(i=0; i<4; i+ + b[ i ].set a(i); oi ,M<-!-v

for(i=0; i<4; cou< ob[ i ].get a();

cout \n ;

return 0;

В этой программе создается массив из четырех элементов типа samp, которым затем присваиваются значения от 0 до 3. Обратите внимание на то, как вызываются функции-члены для каждого элемента массива. Имя массива, в данном случае ob, индексируется; затем применяется оператор доступа к члену, за которым следует имя

2. Если класс содержим уктор, массив объектов может быть инициализирован. Например, здесь объект ob является инициализируемым массивом:

Инициализация массива #include <iostream> using namespace std;

class samp {

int a; . , , . : :v.

public:

samp (int n) { a = n; } int get a() { return a; }

int main ( )

samp ob[4] = { -1, -2, -3, -4 }; int i;



cout \n ; return 0;

110 Самоучитель

for{i=0; i<4; i++) cou ob [ i ].get a(:< ;

Эта программа выводит на экра -3 -4. В этом примере значения от - 1 до -4 передаются объекту ob конструктором.

Фактически синтаксис списка инициализации - это сокращение следующей

конструкции (впервые показанной в главе 2):

samp оЬ[4] = { sainp(-l), samp (-2), samp(-3), samp (-4) };

Однако при инициализации одномерного массива общепринятой является та форма записи, которая была показана в программе (хотя, как вы дальше уви-дате, такая форма записи будет работать только с теми массивами, конструктор которых имеет единственный аргумент).

3. Вы также можете работать с многомерными массивами объектов. Например, эта программа создает двумерный массив объектов и инициализирует его:

Создание двумерного массива объектов tinclude <iostream>

namespace std;

class samp { int a;

public; . I . .. . , V < . , ,

samp(int n) { a = n;

in a() { return a; }

int main()

samp ob[4] 1, 2, 3, 4, 5, 6, 1, 8

int i ;

for(1=0; i<4; {

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

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

cout Vn ; return 0;



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

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