69715

Вказівники на об’єкти

Лекция

Информатика, кибернетика и программирование

Як відомо, при збільшенні покажчика на одиницю він переміщається на наступний елемент того ж типу. Наприклад, цілочисельний покажчик посилатиметься на наступне ціле число. Як правило, адресна арифметика залежить від типу покажчика. (Інакше кажучи, вона залежить від типа даних, на які посилається покажчик.).

Украинкский

2014-10-09

27.5 KB

0 чел.

Тема 5: Вказівники на об'єкти

Покажчики можуть посилатися не тільки на змінні вбудованих типів, але і на об'єкти. Для доступу до членів класу через покажчик на об'єкт використовується оператор  "->" , а не ".". Проілюструємо це за допомогою наступної програми.

#include <iostream>

using namespace std;

class cl {

int і;

public:

cl(int j) { i=j; }

int get_i() { return і; }

};

int main()

cl ob(88), *p;

p = &ob;   // Одержуємо адресу об'єкту ob.

cout << p->get_i(); // для виклику функції get_i() // застосовується оператор ->

return 0 ;

}

Як відомо, при збільшенні покажчика на одиницю він переміщається на наступний елемент того ж типу. Наприклад, цілочисельний покажчик посилатиметься на наступне ціле число. Як правило, адресна арифметика залежить від типу покажчика. (Інакше кажучи, вона залежить від типа даних, на які посилається покажчик.). Це правило торкається і покажчиків на об'єкти.

Покажчику можна привласнити адресу відкритого члена об'єкту, а потім посилатися на цей член з його допомогою. Розглянемо наступну програму, яка виводить на екран число 1.

#include <iostream>

using namespace std;

class cl {

public:

int   i;

cl (int j) { i=j;}

int main ()

{

cl ob(l);

int   *p;

p = &ob.i;    // Отримати адресу члена ob.i.

cout << *p;  // Звернення до члена ob.i через покажчик р

return 0;

}

Оскільки покажчик р посилається на ціле число, він має тип int. В даному випадку не має значення, що змінна є членом об'єкту ob.

Передача посилань на об'єкти

При передачі об'єкту як параметр функції створюється його копія. Після закінчення роботи функції викликається деструктор копії. Проте, якщо параметр викликається за допомогою посилання, копія об'єкту не створюється. Це значить, що після повернення управління параметр функції не знищується і деструктор не викликається. Приклад:

#include <iostream>

using namespace std;

class cl {

int id;

public:

int і ;

cl(int i);

~cl();

void neg(cl &o) { o.i = -o.i; }// Тимчасовий об'єкт не створюється

};

cl::cl(int num)

{

cout << "Створення об'єкту " << num << "\n";

id = num;

}

cl::~cl()

{

cout << "Знищення об'єкту " << id << "\n";

}

int main()

{  

cl о(l);

о. і  =   10;

о. neg(о);

cout <<  о. і  <<   " \n" ;

return   0;

}


 

А также другие работы, которые могут Вас заинтересовать

3609. Банкротство предприятий и антикризисный менеджмент в современных российских условиях 887.5 KB
  Объективным процессом рыночной экономики, основанной на конкуренции, является постоянный переток капиталов в наиболее доходные сферы, перераспределение собственности от неэффективных хозяйствующих субъектов к эффективным. Осуществляется дан...
3610. Инженерная графика 9.34 MB
  Учебно-методическое пособие представляет базовый курс инженерной графики. Приводится необходимая информация для освоения курса инженерной графики и выполнения расчетно-графических работ. Содержатся основные положения нормативно-технической документа..
3611. Исследование некоторых эксплуатационных показателей трелевочных тракторов ОТЗ различной энергонасыщенности 8.82 MB
  Введение Основной задачей технического прогресса в лесозаготовительной промышленности на перспективный период является увеличение производительности труда за счет интенсификации общественного производства, т.е., за счет роста его энерговооруженности...
3612. Характеристика суждения 59.5 KB
  Характеристика суждения Придать логическую форму следующим высказываниям (выразить через суждения вида А, Е, I, О): а) Рыба дышит жабрами. А: Все S есть P б) Лень никогда не приводит к добру; E: все S не есть P в) Иногда металлы жидкие. I: Некоторые ...
3613. CASE-средства: этапы становление, современное состояния 93.5 KB
  CASE-средства: этапы становление, современное состояния Техническими предпосылками CASE-технологий являются средства машинной графики, большие объемы используемой памяти ЭВМ, высокая производительность и т.п. В настоящее время можно выделить три пок...
3614. Понятие темперамента 85 KB
  Понятие о темпераменте Темперамент является одним из наиболее значимых свойств личности. Интерес к данной проблеме возник более двух с половиной тысяч лет тому назад. Он был вызван очевидностью существования индивидуальных различий, которые обуслов...
3615. Начертательная геометрия и инженерная графика 2.3 MB
  Содержание и объем контрольных работ находятся в соответствии с программой Министерства образования Российской Федерации. Пособие включает методические указания, рабочую программу и варианты заданий для контрольных работ. В нем кратко изложен теорет...
3616. Разработка технологического процесса механической обработки детали «Клапан» 579.5 KB
  Основные направления в развитии технического прогресса, которые характеризуются не только непрерывным появлением принципиально новых технологических процессов производства, но и непрерывной заменой существующих процессов более точными