
- •Указатель this
- •Void print ( void) void print ( void)
- •Void main ()
- •Void que::add(void)
- •Void que::print (void)
- •Void main( )
- •Перегрузка функций
- •Void f ( int );
- •Void f (int, int);
- •Void f ( char* );
- •Void f ( int)
- •Void main ()
- •Void main ( )
- •Перегрузка конструкторов
- •Перегрузка стандартных операций
- •Void main ( )
- •Void main ( )
- •Void vivod ( ) // выводит данные
- •Void main ( )
- •Void display( )
- •Void main ( )
- •Перегрузка операции присваивания
- •Объект1
- •Int GetX ( ) { return X; }
- •Void main ()
- •Блокировка копирования и присваивания:
- •Преобразование типов в классах пользователя
Указатель this
Каждый раз при создании объекта класса строится указатель, называемый this, и содержащий адрес этого объекта. Правильнее сказать , указатель определяется не в момент создания объекта , а в момент вызова любого из методов объекта.
В связи с неявным определением this является константным указателем, т.е. по умолчанию происходит определение:
имя класса *const this = адрес обрабатываемого объекта
При работе с компонентами класса можно использовать указатель this
Эквивалентно:
Class point { int x, y ; Class point { int x, y ;
public: public:
point( int xx=0, int yy=0) point( int xx=0, int yy=0)
{this-> x=xx ; this ->y =yy ;} ; { x=xx ; y =yy ;} ;
Void print ( void) void print ( void)
{ cout<< this->x <<” “ << this->y;} ; {cout<< x <<” “ <<y;} ;
} ; };
В таком использовании нет никаких преимуществ.
Иногда используется при конфликте имен, когда имена формальных параметров функций совпадают с именами компонентов класса:
Class point { int x, y ; Class point { int x, y ;
public: public:
point( int x=0, int y=0) point( int x=0, int y=0)
{this-> x=x ; this ->y =y ;} ; { point::x=x ; point::y =y ;} ;
// используя this // используя квалифицированное имя
…
Часто в функциях - членах класса параметры функции имеют объект некоторого класса (или указатель на объект), а объект еще не существует. Для этого также используется указатель this, обозначающий указатель на тот объект, для которого вызывается данная функция .
Class A
{ int x, y ;
public:
A ( int xx=0, int yy =0){ x=xx ; y = yy; }
A func ( ) ;
…
}
A A :: func( ) { if ( x%2) x++; // функция x преобразующая в четное
return * this;
}
Void main ()
{ A a1 (17, 55)
A a2 = a1 . func ();
}
/* Можно объявить так
A* A:: func ( )
{ …
return this} */
Чаще всего this используется при организации связанных списков, звеньями которых должны быть объекты класса и встает необходимость включать в связи указатель на тот объект, который в данный момент обрабатывается
Пример: Очередь
#include <iostream.h>
#include<stdio.h>
Class que
{ static que*first ; // указатель(адрес)первого элемента очереди
que*next ; // указатель на следующий элемент очереди
char bukva; //содержимое элемента очереди
public: // общедоступные функции
que(char c) { bukva = c } ; // конструктор
void add (void) ; // функция добавления элемента в очередь
static void print (void); // вывод содержимого очереди
}
// определения функций: