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;

}


 

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

31037. СТОРОННИКИ ПЕРЕСТРОЙКИ ПРАВЫЕ РЕФОРМАТОРЫ ВЫСТУПАВШИЕ ЗА РЕФОРМЫ, НО НЕ В ГОРБАЧЕВСКОМ ВАРИАНТЕ 52.5 KB
  АЛЬТЕРНАТИВЫ ПОЛОГЕТЫ СТАРОЙ ПОЛИТИЧЕСКОЙ СИСТЕМЫ БЕЗ ВСЯКИХ РЕФОРМ СТОРОННИКИ ПЕРЕСТРОЙКИ ПРАВЫЕ РЕФОРМАТОРЫ ВЫСТУПАВШИЕ ЗА РЕФОРМЫ НО НЕ В ГОРБАЧЕВСКОМ ВАРИАНТЕ Полозков Чебриков Валентин Зорин глава ВС СССР Лукьянов член Политбюро Шенин а также члены ГКЧП Горбачев Яковлев Рыжков и др. СССР в годы Перестройки. ОПРЕДЕЛЕНИЯ: Перестройка это политикоэкономический и социальный курс на реформирование тоталитарной системы в СССР проводимый руководством КПСС во главе с М. Горбачёвым во второй половине 1980х в СССР и...
31038. Внешняя политика СССР в годы Перестройки 48.5 KB
  Внешняя политика СССР в годы Перестройки ОПРЕДЕЛЕНИЯ: Холодная война геополитическая экономическая и идеологическая конфронтация между странами первого капиталистического лагеря и второго социалистического лагеря мира и их союзниками длившаяся с середины 1940х гг. до развала СССР. и характеризующегося отказом от удержания любой ценой в сфере своего влияния восточноевропейских и иных зависимых от СССР стран. ПЕРСОНАЛИИ: ШЕВАРДНАДЗЕ Эдуард Амвросиевич член Политбюро ЦК КПСС и по совместительству Министр иностранных дел СССР в...
31039. История постсоветской России 51.5 KB
  Распад СССР означал для России резкое сокращение экономического потенциала и обороноспособности страна оказалась отодвинутой на северовосток в глубь Евразии потеряв половину морских портов и торговый флот на западе Прибалтика и юге Украина Закавказье. Он давал соседям России возможности использовать в своих интересах ее неожиданную и временную слабость и на переговорах шел на значительные уступки особенно Соединенным Штатам. В конце 1991 начале 1992 Ельцин сделал специальное заявление что ядерные ракеты отныне не направлены на США...
31040. Проблемы славянского этногенеза. Восточные славяне: територия, хозязствово, быт, культура, религия 33 KB
  Восточные славяне: територия хозво быт культура религия. Славяне относятся к одной из самых многочисленных групп индоевропейских народов. Как самостоятельные народы начали свое существование греки латины славяне и др. Тогда же оформились три славянские ветви: западные славяне поляки чехи словаки южные болгары сербы хорваты и др восточные русские украинцы белорусы.
31041. Центры зарождения славянской государственности. Полемика историков вокруг проблемы образования Древнерусского гос-ва. Политика первых правитиелей Руси: Олега, Игоря, Ольги, Святослава 31.5 KB
  Главными проблемами являются вопросы о причинах возникновения госва Русь кто такие русыи откуда взялось название страны Русь кто были варяги. Немецкие ученые Байер и Миллер считали что слово русь означало название варяжского племени пришедшее с Рюриком что Древнерусское госва было создано норманнамиварягами. Название русь он связал с древним народом сарматамироксаланами и с названием реки Рось. В современной отечественной и зарубежной науке большинство ученых склоняется к мнению о скандинавском происхождении термина русь.
31042. Русь при Владимире 1 и Ярославе Мудром. Внешняя и внутренняя политика. Крещение и распространение христианства на Руси 31 KB
  Русь при Владимире 1 и Ярославе Мудром. шла междоусобица сыновей Святослава которую выиграл Владимир9801015. При Владимире завершилось объединение восточнославянских земель. При Владимире в Древнерусское госво вошли червенские земли земли радимичей северных угрофинов и др.
31043. Древнерусское общество и государство в 9-12 веках 31 KB
  Завещание разделило русскую землю на уделы. Это означало окончательный распад Руси на уделы. Постепенно малые бедные окраины стали превращаться в цветущие и сильные уделы. Многие уделы он сконцентрировал в руках своих сыновей.
31044. Тенденции развития различных древнерусских земель в 12 – начале 13 веков. Крупнейшие княжества и земли 33 KB
  Условной датой начала раздробленности на Руси считают 1132г когда умер Мстислав сын Мономаха и раздрася вся русская земля. Время раздробленности на Руси тянулось с начала 12века по147080г. На юге и юговостоке Руси неособо любили метсное боярство поэтому занятие киевского престола всякий раз обуславливалось сочетанием борьбы. В Западной Руси сильны были федеративные тенденции.
31045. Русь в международных отношениях 11-13веков: отношения с Великой Степью, Византией и Западной Европой 30.5 KB
  Первая встреча русских с монголотатарами произошла 31 мая 1223г. Впоследствии установилась зависимость русских земель от державы Батыя продлившаяся для СевВост Руси до 1480г а для Южной до 1362г. Эти 2 победы были очень важны: они прервали череду поражений русских для церкви же особенно было важно недопущение католического влияния на русских землях.