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;

}


 

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

36202. Стропильные материалы для малоэтажных зданий (свойства, область применения, достоинства и недостатки) 18.58 KB
  Стропильные материалы для малоэтажных зданий 91 свойства область применения достоинства и недостатки. недостатки: требует антисептирования защиты от гниения; внимания к влажности древисины и воздушносухая и влажная могут привести к деформации системы и или частичному и или полному разрушению. недостатки: металл является отличным...
36203. Стропильные материалы для малоэтажных зданий 20.54 KB
  Стропила несущие конструкции скатной кровли. Наслонные стропила: концами опираются на стены здания а средней частью при пролете между опорами более 4. Наличие дополнительной опоры позволяет увеличить ширину перекрываемую наслонными стропилами до 12м а двух опор – до 15м. Висячие стропила: опираются только концами на стены здания; шаг таких стропил от 3 до 6.
36204. Конструктивные схемы зданий (схемы зданий каркасных и зданий с несущими стенами) 24.76 KB
  Несмотря на значительные различия существующие между зданиями разног назначения как во внешнем виде так и во внутренней структуре все они состоят из основных взаимосвязных архитектурноконструктивных элементов выполняющих определенные функции. Основные элементы здания разделяются на: Несущие – воспринимают основные нагрузки возникающие в здании. К основным элементам здания относятся: фундаменты стены перекрытия отдельные опоры крыша перегородки лестницы окна двери. ФУНДАМЕНТ подземная конструкция основным назначением...
36205. Естественные и искусственные основания зданий (классификация грунтов) 32.5 KB
  Классификация грунтов: Скальные грунты залегают в виде сплошного массива. Эти грунты несжимаемы водоустойчивы и при отсутствии трещин и пустот являются наиболее прочными и надежными основаниями. Менее прочны скальные грунты залегающие в виде трещиноватых слоев образующих подобие сухой кладки. Крупнообломочные грунты это несвязные обломки скальных пород с преобладанием по массе свыше 50 частиц размером более 2мм.
36206. Фундаменты малоэтажных зданий (конструкции, материалы) 188.22 KB
  Фундаменты малоэтажных зданий конструкции материалы Фундамент конструктивный элемент здания воспринимающий нагрузку от наземной части здания и передающий ее на основание. с подушкой3трапецеидальной формы4ступенчатый высота ступени больше или равно 30 см Фундаменты малоэтажных жилых зданий...
36207. Деревянные конструкции. Принцип фахверковой стены. Вопросы ее утепления и облицовки 51 KB
  Фахверковые дома имеют жёсткий несущий каркас из : стоек вертикальных элементов балок горизонтальных элементов раскосов диагональных элементов которые и являются основной отличительной особенностью конструкции фахверка. В основном применяются конструкции позволяющие создать большую площадь остекления что зрительно создает эффект растворения границы интерьера сближая человека с природой. В основном несущие элементы конструкции фахверка покрывают защитным составом позволяющим сохранять древесину сухой трудновоспламеняемой и...
36208. КАМЕННЫЕ КОНСТРУКЦИИ ОДНОСЛОЙНЫЕ И МНОГОСЛОЙНЫЕ КОНСТРУКЦИИ НЕСУЩИХ СТЕН 159 KB
  Стены основные элементы конструкции здания. Несущая стена является естественным продолжением и неотъемлемым элементом конструкции здания служит опорой для балок или бетонных плит потолочного перекрытия. Наружные стены могут быть однослойной или слоистой конструкции.
36209. Задачи дискретной оптимизации. Основные точные методы дискретной оптимизации: поиск с возвратом, динамическое программирование, метод ветвей и границ. Приближённые методы дискретной оптимизации: жадный алгоритм, метод локальных вариаций 126.5 KB
  Тогда в терминах ЦЧЛП задача о рюкзаке может быть сформулирована так: найти максимум линейной функции при ограничениях хj  0 . Найти кратчайший маршрут коммивояжера бродячего торговца начинающийся и заканчивающийся в заданном городе и проходящий через все города. Воспользовавшись им при k = n – 1 1 можно найти Q х0 – оптимальное значение критерия эффективности. Зная х1 можно найти – оптимальное управление на 2й стадии и т.
36210. Языки описания выбора. Процедуры выбора при критериальном описании: скалярно-оптимизационный механизм выбора, человеко-машинные процедуры, мажоритарные схемы 73.5 KB
  Процедуры выбора при критериальном описании: скалярнооптимизационный механизм выбора человекомашинные процедуры мажоритарные схемы. Как любая теория теория выбора начинается с языка описания. К настоящему времени сложилось три основных языка описания выбора: критериальный язык; язык бинарных отношений; язык функций выбора.