|
Программирование >> Расширенная версия языка c++
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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |