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