Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Перегрузка функций и операций.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
143.87 Кб
Скачать

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;