Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ / Классы /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Классы и Члены - Программирование от RIN.RU
Классы и Члены



Ссылки на Себя


В функции члене на члены объекта, для которого она была вызвана, можно ссылаться непосредственно.


Например:


class x {
int m;
public:
int readm() { return m; }
};




x aa;
x bb;




void f()
{
int a = aa.readm();
int b = bb.readm();
// ...
}


В первом вызове члена member() m относится к aa.m, а во втором - к bb.m.


Указатель на объект, для которого вызвана функция член, является скрытым параметром функции. На этот неявный параметр можно ссылаться явно как на this. В каждой функции класса x указатель this неявно описан как


x* this;


и инициализирован так, что он указывает на объект, для которого была вызвана функция член. this не может быть описан явно, так как это ключевое слово. Класс x можно эквивалентным образом описать так:


class x {
int m;


public:
int readm() { return this->m; }
};


При ссылке на члены использование this излишне. Главным образом this используется при написании функций членов, которые манипулируют непосредственно указателями. Типичный пример этого - функция, вставляющая звено в дважды связанный список:


class dlink {
dlink* pre; // предшествующий
dlink* suc; // следующий




public:
void append(dlink*);
// ...
};




void dlink::append(dlink* p)
{
p->suc = suc; // то есть, p->suc = this->suc
p->pre = this; // явное использование this
suc->pre = p; // то есть, this->suc->pre = p
suc = p; // то есть, this->suc = p
}




dlink* list_head;




void f(dlink*a, dlink *b)
{
// ...
list_head->append(a);
list_head->append(b);
}


Цепочки такой общей природы являются основой для списковых классов, которые описываются в этой главе . Чтобы присоединить звено к списку необходимо обновить объекты, на которые указывают указатели this, pre и suc (текущий, предыдущий и последующий). Все они типа dlink, поэтому функция член dlink::append() имеет к ним доступ. Единицей защиты в C++ является class, а не отдельный объект класса.


<<<  НазадВперед  >>>
 1  2  3  4 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Знакомство и краткий обзор

Интерфейсы и Реализации

Друзья и Объединения

Конструкторы и Деструкторы

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь