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

Шпоры по С++

Для компонентнной функций double& re( ); указатель определяется так: double& (complex1 : : * ptCom ) ( );.
Описав указатель ptCom можно задать его значения ptCom = &complex1 : : re;. Теперь для любого объекта А класса complex1:
complex1 A(10.0, 2.4 ); можно вызвать принадлежащую классу функцию (A.*ptCom)()=11.1; cout<<(A.*ptCom)(); Формат определения указателя на компонентные данные класса: тип_данных (имя_класса : : *имя_указателя ); В определение указателя можно включить явную инициализацию: &имя_класса : : имя_компонента; При этом компонент класса должен быть общедоступным (public). complex1 comp; comp.real=16.0; comp.imag=33.4; double (complex1::*pdat )=&complex1::imag; cout<<“\ n comp.imag=“<*‘:
указатель_на_объект_класса->*указатель_на_компонент_данных
или
указатель_на_объект_класса ->*указатель_на_ метод(параметры)
Компонентная функция должна быть описана в теле класса. Она имеет доступ ко всем компонентам класса. При определении классов, их компонентные функции могут быть специфицированны как подставляемые. Кроме явного служебного слова inline для этого используется следующее: если определение (не только прототип) принадлежащей классу функции полностью размещено в классе, то по умолчанию она считается подставляемой. Поэтому существует второй способ определения принадлежащих классу функций: в тело класса помещают только прототип компонентной функции, а ее определение вне класса. При внешнем определении компонентной функции, программист сообщает компилятору, к какому классу эта функция относится, используя бинарную форму операции ‘::‘ :
имя_класса : : имя_компонентной_функции
Эта конструкция называется квалифицированным именем компонентной функции и означает, что функция компонент класса, есть и лежит в области его действия. Прототип этой функции в теле класса выглядит:
тип имя_функции (спецификация_и_инициализация_параметров);
Вне тела класса определение функции выглядит так:
тип имя_класса::
имя_функции(спецификация_формальных_параметров)
{ тело функции }
// Point.h
#ifndef POINTH
#define POINTH 1
class point
{ protected:
int x, y;
public:
point (int xi=0, int yi=0 ); // Конструктор
int& givex (void);
int& givey (void);
void show (void);
void move (int xn=0, int yn=0);
prevate:
void hide (); // Убрать с экрана изображение точки
};
#endif

Страницы: 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

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