
- •Указатель 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 ()
- •Блокировка копирования и присваивания:
- •Преобразование типов в классах пользователя
Void main ()
{ int a=2 ;
int* b = & a;
char *c= “yyyy”
char d [] =”xxxx”
Print(a); Print(b); Print(c); Print (d);
}
Результат:
int=2
pointer =0x12340ffe , значение = 2
string = yyyy
string = xxxx
Перегрузка функций – методов класса
…
class Men {
char* name;
int age;
public:
void Name (char* n) { name=n;} // перегруженная функция Name для
//инициализации
char* Name ( ) { return name; } // перегруженная функция для Name
//чтения
void Age ( int a ) {age = a; } // перегруженная функция Age для
//инициализации
int Age ( ) { return age ;} // перегруженная функция Age для
// чтения
Void main ( )
{ Men*m = new Men;
m->Name(“ Ivans”);
m-> Age(45);
cout<< m->Name ( )<< “ – “ <<m->Age( );
}
Перегрузка функций действует в пределах их видимости, в пределах класса.
Функции Name( ) или Age( ) , объявленные в другом классе, - это совсем другие функции.
Перегрузка обычных функций не дает, каких либо существенных преимуществ, это просто удобно.
Перегрузка конструкторов
Перегрузка конструкторов приобретает особое значение, из-за того, что конструктору нельзя назначать произвольное имя, оно всегда должно совпадать с именем класса.
Наличие в классе нескольких конструкторов , имеющих одно имя, но разный состав параметров, возможно благодаря реализации средства перегрузки функций.
Таким образом, перегрузка для конструкторов просто неизбежна.
Мы уже рассматривали несколько конструкторов, которые могут быть включены в класс
class A {
int x , y ;
public:
A ( int, int ); // конструктор с параметрами для инициализации
// данных
A( ); // конструктор по умолчанию
A ( A& ) ; // конструктор копирования
… } ;
Часто при разработке класса предусматривается несколько вариантов инициализации объектов и значит должно быть несколько конструкторов с параметрами:
Class Window {
int x; // х-координата начала окна
int y ; // y-координата начала окна
int w ; // ширина окна
int h ; // высота окна
Window ( ) // конструктор по умолчанию
{ x = y = 0; w = h= 100 ; }
Window ( int w1 , int h1 ) // конструктор инициализации размеров окна
{ x = y = 0 ; w = w1; h = h1 ; }
Window ( int x1 , int y1 , int w1, int h1 ) // инициализация положения и
{ x = x1; y = y1 ; w = w1 ; h = h1 } //размеров окна
Window ( Window & win ) // конструктор копирования данных окна
{ x = win.x; y = win.y ; w = win.w ; h = win.h ; }
} ;
…
Window w1;
Window w2 ( 300 , 250) ;
Window w3 (5 ,10 , 400 , 300 )
Window w4 = w3;