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;

}


 

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

85618. Патологическая анатомия: Методические рекомендации 13.73 MB
  Болезни печени и желчевыводящей системы. Определение этиологию классификацию патологическую анатомию осложнения массивного некроза печени. Определение классификацию патологическую анатомию осложнения цирроза печени. Определение классификацию патологическую анатомию опухолей печени.
85619. Обучение сочинению на лингвистическую тему в 9 класс 37 KB
  Самым сложным заданием при сдаче ГИА является, на мой взгляд, написание сочинения на лингвистическую тему. В сочинении экзаменуемый должен показать умение аргументировать свои мысли и утверждения, используя в качестве доказательств своей точки зрения примеры из прочитанного текста.
85622. Статистика населения 1.06 MB
  Предмет метод и задачи статистики населения. Изучение численности размещения и состава населения. Изучение структуры и размещения населения по территории. Изучение естественного движения и воспроизводства населения.
85624. Неорганическая химия, курс лекций 1.96 MB
  Учебно-методическое пособие включает лекции по отдельным темам курса «Неорганическая химия» и предназначено для контролируемой самостоятельной работы студентов инженерно – технологического факультета, для которых введен отдельный курс по химии элементов, а также может быть использовано студентами других факультетов.
85625. Внутрішній порядок у підрозділах 6.21 MB
  Для розміщення кожної роти необхідно передбачити такі приміщення: спальне приміщення для особового складу. народознавчу світлицю; кімнату для командира роти кімнату для підготовки офіцерів до занять; кімнату для підготовки сержантів до занять; кімнату для зберігання зброї; кімнату місце для чищення зброї...