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

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

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





Якщо клас містить параметризований конструктор, то масив об'єктів такого класу можна ініціалізувати. Наприклад, у наведеному нижче коді програми використовується клас 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


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


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

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

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

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