Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Ініціалізація масивів об'єктів





Якщо клас містить параметризований конструктор, то масив об'єктів такого класу можна ініціалізувати. Наприклад, у наведеному нижче коді програми використовується клас demoClass і параметризований масив demoMas об'єктів цього класу, що ініціалізується конкретними значеннями.


#include < iostream> // Для потокового введення-виведення

#include < conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

 

class demoClass { // Оголошення класового типу

int a, b;

public:

demoClass(int n, int m) { a = n; b = m; }

int getAzm() { return a; }

int getBzm() { return b; }

};

 

int main ()

{

demoClass demoMas[4][2] = {

demoClass(1, 2), demoClass(3, 4),

demoClass(5, 6), demoClass(7, 8),

demoClass(9, 10), demoClass(11, 12),

demoClass(13, 14), demoClass(15, 16)

};

 

int i, j;

 

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

for (j=0; j< 2; j++){

cout < < " demoMas[" < < i < < ", " < < j < < " ] ==> a= ";

cout < < demoMas[i][j].getAzm() < < "; b= ";

cout < < demoMas[i][j].getBzm() < < " \n";

}

 

cout< < " press any key! ";

while(! kbhit());

}

Доступ до структури можна отримати безпосередньо або через покажчик на цю структуру. Аналогічно можна звертатися і до об'єкта: безпосередньо (як в усіх попередніх прикладах) або за допомогою покажчика на об'єкт. Щоб отримати доступ до окремого члена об'єкта виключно " силами" самого об'єкта, використовують оператор " крапка". А якщо для цього слугує покажчик на цей об'єкт, необхідно використовувати оператор " стрілка" [1].

Щоб оголосити покажчик на об'єкт, використовується аналогічний синтаксис, як і у разі оголошення покажчиків на значення інших типів. У наведеному нижче коді програми створюється простий клас pClass, визначається об'єкт цього класу P_ob і оголошується покажчик на об'єкт типу pClass з іменем р. У наведеному прикладі показано, як можна безпосередньо отримати доступ до об'єкта P_ob і як використовувати для цього покажчик (у цьому випадку ми маємо справу з непрямим доступом).


#include < iostream> // Для потокового введення-виведення

#include < conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

 

class pClass { // Оголошення класового типу

int num;

public:

void setNum(int num) {num = num; }

void showNum() { cout < < " num= " < < num < < " \n"; }

};

int main ()

{

pClass P_ob, *p; // Створення об'єкта класу і покажчика на нього.

P_ob.setNum(1); // Отримуємо прямий доступ до об'єкта P_ob.

P_ob.showNum();

p = & P_ob; // Присвоюємо покажчику p адресу об'єкта P_ob.

p-> showNum(); // Отримуємо доступ до об'єкта P_ob за допомогою покажчика.

cout< < " press any key! ";

while(! kbhit());

}

Звернемо Вашу увагу на те, що адреса об'єкта P_ob отримується шляхом використання оператора посилання " & ", що цілком відповідає механізму отриманню адреси для змінних будь-якого іншого типу.

Інкрементація або декрементація покажчика відбувається так, щоб завжди вказувати на наступний або попередній елемент базового типу. Те саме відбувається і під час інкрементації або декрементації покажчика на об'єкт: він вказуватиме на наступний або попередній об'єкт. Щоби проілюструвати цей механізм, дещо модифікуємо попередню програму. Тепер замість одного об'єкта P_ob оголосимо двоелементний масив P_ob типу pClass. Звернемо Вашу увагу на те, як інкрементується та декрементується покажчик р для доступу до двох елементів цього масиву.

#include < iostream> // Для потокового введення-виведення

#include < conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

 

class pClass { // Оголошення класового типу

int num;

public:

void setNum(int num) {num = num; }

void showNum(){ cout < < " num= " < < num < < " \n"; }

};

 

int main ()

{

pClass P_ob[2], *p;

P_ob[0].setNum(10); // Прямий доступ до об'єктів

P_ob[1].setNum(20);

p = & P_ob[0]; // Отримуємо покажчик на перший елемент.

p-> showNum(); // Відображаємо значення елемента P_ob[0] за допомогою покажчика.

p++; // Переходимо до наступного об'єкта.

p-> showNum(); // Відображаємо значення елемента P_ob[1]// за допомогою покажчика.

p--; // Повертаємося до попереднього об'єкта.

p-> showNum(); // Знову відображаємо значення елемента P_ob[0].

cout< < " press any key! ";

while(! kbhit());

}2.4. Зразок виконання роботи







Дата добавления: 2014-11-10; просмотров: 1466. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

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

Подкожное введение сывороток по методу Безредки. С целью предупреждения развития анафилактического шока и других аллергических реак­ций при введении иммунных сывороток используют метод Безредки для определения реакции больного на введение сыворотки...

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

ПРОФЕССИОНАЛЬНОЕ САМОВОСПИТАНИЕ И САМООБРАЗОВАНИЕ ПЕДАГОГА Воспитывать сегодня подрастающее поколение на со­временном уровне требований общества нельзя без по­стоянного обновления и обогащения своего профессио­нального педагогического потенциала...

Studopedia.info - Студопедия - 2014-2026 год . (0.013 сек.) русская версия | украинская версия