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;

}


 

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

77414. Ликвидация коммерческих организации 23.27 KB
  При добровольной учредители или орган юридического лица это решение может приниматься и по истечении срока на который создавалось юридическое лицо по достижению цели в случае если суд признал недействительной государственную регистрацию юридического лица. К ликвидационной комиссии переходят правомочия управления коммерческой организацией она выступает в суде от имени ликвидируемого юридического лица. Этот баланс утверждается органами юридического лица по соглашению с органами государственной регистрации. Ликвидация юридического лица 1.
77416. Полное товарищество 19.53 KB
  Закон специально подчеркивает право участника полного товарищества знакомиться со всей документацией по ведению дел товарищества даже в случае когда такой участник в соответствии с учредительным договором не уполномочен на ведение дел товарищества а отказ от этого права или его ограничение в том числе по соглашению участников товарищества ничтожны. Кроме того он вправе возмездно или безвозмездно передать свою долю в складочном капитале товарищества или ее часть как другому товарищу так и третьему лицу не участвующему в товариществе....
77418. Особенности государственных и муниципальных предприятий 66 KB
  Об унитарных предприятиях унитарное предприятие может иметь гражданские права соответствующие предмету и целям его деятельности предусмотренные в уставе этого предприятия и нести обязанности. Это говорит о том что унитарные предприятия обладают специальной правоспособностью а не общей. Предприятия являются унитарными т. Виды государственных и муниципальных предприятий В РФ создаются и действуют следующие виды: Унитарные предприятия основанные на праве хозяйственного ведения Федеральное государственное государственное и...
77419. Имущество унитарных предприятий 21.98 KB
  299 ГК право на имущество возникает с момента передачи такого имущества предприятия; п. На праве хозяйственного ведения уставный фонд обязателен; казенные предприятия уставный фонд не нужен так как субсидиарная ответственность государства. Предельный срок в течение которого уставный фонд должен быть сформирован = 3 месяца с момента регистрации предприятия. Крупная сделка Для контроля за деятельностью унитарного предприятия по аналогии с деятельностью хозяйственных обществ вводится данное понятие.