Понедельник, Июль 5th, 2010

Шпоры по С++

Описание класса point может появляться в компилируемом файле только однократно, так как условная препроцессорная директива #ifndef POINTH защищает его от дублирования. В прототипе конструктора и функции move() имена формальных параметров можно было опустить.
// Point.cpp
#ifndef POINTCPP
#define POINTCPP 1
#include
#include “point.h”
point::point (int xi, int yi) { x=xi; y=yi; }
int& point : : givex (void) { return x; }
int& point : : givey (void) { return y; }
void point : : show (void) { putpixel (x, y, getcolor()); }
void point : : hide (void) { putpixel (x, y, getbkcolor()); }
void point : : move (int xn, int yn) { hide(); x=xn; y=yn;show(); }
#endif
Внешнее определение методов класса позволяет модифицировать принадлежащие классу функции, не изменяя текста описания класса. При таком определении методы оформляются компилятором в виде глобальных функций.
#include
#include
#include “point.cpp”
void main ()
{ point A(200,50); //создается невидимая точка А
point B; //создается невидимая точка B с нулевыми координатами
point D (500,200);
int dr=DETECT, mod
initgraph (&dr, &mod, “c:\\ BCH\\ bgi “); //инициализация графики
A.show(); getch(); B.show(); getch(); D.show(); getch(); A.move(50,60); getch();
closegraph();
}

26. Указатель this и его использование.
При вызове функции, принадлежащей классу, для обработки данных конкретного объекта, этой функции автоматически передается указатель на тот объект, для которого функция вызвана. Этот указатель имеет фиксированное имя this и (“тайно”) определен в каждой функции класса следующим образом:
имя_класса *const this = адрес_объекта;
Изменить указатель this нельзя, так как это константный указатель. Он указывает именно на тот объект, для которого функция вызывается. This —является дополнительным (скрытым) параметром каждой нестатической компонентной функции. Объект, который адресуется указателем this, становится доступным внутри принадлежащей классу функции именно с помощью указателя this.
При совпадении имени компонента класса с именем формального параметра принадлежащей классу функции указатель this позволяет компилятору разобраться, к какому параметру относится сообщение. Снятие неоднозначности в теле принадлежащей классу функции между одинаковыми именами формального параметра и компонента класса можно осуществить и без указателя this. Гораздо чаще применяют операцию изменения видимости: имя_класса : : имя_компонента.
Очень удобен указатель this, при необходимости задать компонентной функции адрес определенного объекта класса. Например, при организации списков, звеньями которого должны быть объекты класса.
Ниже приведён пример класса, объекты которого формируют двухсвязный список с использованием указателя this.
class member // Member.h
{ static member *last_memb;

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры