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;

}


 

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

80597. Письменное сложение и вычитание трёхзначных чисел без перехода через десяток 54 KB
  Цель: учить детей пользоваться письменным приёмом сложения и вычитания трёхзначных чисел без перехода через разрядную единицу способом вычисления в столбик; развивать математические способности, речь, логическое мышление, зрительную память, познавательный интерес и самостоятельность...
80598. Дикі та свійські тварини 73.5 KB
  Мета: ознайомлювати учнів з істотними ознаками диких і свійських тварин; учити визначати яку користь приносить свійські тварини людині;формувати уміння їх розпізнавати за істотними зовнішніми ознаками місцем мешкання способом харчування; розвити логічне мислення через завдання на порівняння...
80599. Пригадайте, поміркуйте. Підсумковий урок по темі «Шевченкове слово» 36 KB
  Мета: систематизувати і узагальнити знання учнів з теми; розширити знання з теми Шевченко-художник; ознайомити із творчістю землячки народної художниці Катерини Білокур; вчити учнів порівнювати; виховувати любов до рідної землі до прекрасного. Знайомство з творчістю народної художниці Катерини Білокур.
80600. Интегрированный урок по математике и природоведению в 3 классе «Путешествие с Капитошкой» 75.5 KB
  Иллюстрации с изображением моря реки озера круговорота аквариума; карточки с заданиями; рисунки облаков со словами; Капитошка магнитофон с записью шума воды. Вы согласны Как вы думаете почему ее так зовут Откуда она к нам пришла Из морей океанов А на планете Земля чего больше воды или суши...
80601. Урок позакласного читання «Поетичні акварелі». Навчаємось писати вірші 53.5 KB
  Мета. Ввести учнів у світ поезії відомих українських поетів Тараса Шевченка, Лесі Українки, Анатолія Костецького; дати можливість самим учням спробувати себе у віршотворенні, навчити підбирати найвдалішу риму до слова, вчити дітей виразно читати поетичні твори, зв’язано висловлювати...
80602. Об’єми геометричних тіл. Вимірювання об’єму прямокутного паралелепіпеда і піраміди 46.5 KB
  Мета: Вивести формулу обчислення об’єму прямокутного паралелепіпеда. На конкретному прикладі показати відношення об’ємів прямокутного паралелепіпеда і піраміди. Розвивати логічне мислення, уміння застосовувати набуті знання на практиці.
80603. Домашні обереги 45.5 KB
  Розвивати увагу зв’язне мовлення; виховувати любов і шану до українських традицій до батьків до хліба. Обладнання: святково прибраний клас вишиті рушники хліб і сіль пиріжки вислови про хліб ноутбук. Але слово виспіване мамаю в колисковій повертає до рідного дому якого не можна зрадити як не можна зрадити...
80604. Добавление в случае нескольких слагаемых 80 KB
  Цель: ознакомить учащихся с разными способами вычисления значений выражений в случае нескольких слагаемых; формировать навыки устного счёта; закрепить умение письменного сложения многозначных чисел; совершенствовать умение решать составные задачи; развивать внимание, логическое мышление...
80605. Ми разом. We are Together 41 KB
  I am glad to see you, too! Thank you, sit down. The topic of our lesson is We are Together. Today we are going to remember and repeat everything we know and I’ll represent you English ABC. Тема нашого уроку «Ми разом».