Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

StrokaZ;

Инициализация | Такой элемент должен быть определен в классе как статический. | Доступ к членам класса | Конструкторы и деструкторы | Конструктора); | Деструктор- это функция, которая автоматически выполняется, когда экземпляр класса уничтожается. | Имя объекта. имя компонента | Параметров) |


Z=X+Y + “ Нет войне!”;// эквивалентно Z =operator + (X,Y);

// Z = operator + (Z,” Нет войне!”);

Z.vivod(); }

stroka& operator+(stroka&A, stroka&B)

{ int N = A.len_str() +B.len_str();

stroka*ptr=new stroka(N); // выделяем память на суммарную строку

srtcpy(ptr->string(), A.string());// копируем в новую строку первуюстроку

strcat(ptr->string(), B.string ()); // присоединяем к ней и вторую строку

return * ptr // возвращаем значение, а не указатель (разыменовали)

}

 

Перегрузку можно проводить в трех случаях:

1) операция функция является компонентной функцией класса

2) операция функция является дружественной функцией класса

3) хотя бы один параметр – типа класс или ссылка на класс

Если операция – функция является компонентной функцией класса, обязательно не статической ( т. е функция вызывается и обрабатывает данные конкретного объекта),

то при определении у нее на один параметр меньше, одним параметром по умолчанию является тот объект для которого вызывается функция,

Заголовок выглядит так

Class A { …;};

A operator + (A tip1)

И выражение C+D трактуется как C.operator+ (D)

В рассматриваем случае С – это тот объект для которого вызывается функция.

3. class stroka {

char*ch // указатель на строку на символьный массив

int len // длина строки

public:

stroka(char*cch) // конструктор1

{ len = strlen(cch); ch=new char [len+1];

strcpy (ch,cch); };

stroka(int N=20) // конструктор 2

{ ch= new char[N+1}; len=0; ch[0]=”\0”}

int& len_str(void) { return len;} // возвращает ссылку на длину

//строки

char * string (void) {return ch;} // возвращает указатель на строку

void vivod () // выводит данные

{ cout<< “строка: “ <<ch <<”, длина строки=”<<len;};

~stroka() // деструктор

{ delete [ ]ch;};

stroka& operotor+(stroka& B);

}

stroka& stroka:: operotor+(stroka& B)

{ int N = this->len_str() +B.len_str();

stroka*ptr=new stroka(N); // выделяем память на суммарную строку

srtcpy(ptr->string(),this->string());// копируем в новую строку первую

// строку

strcat(ptr->string(), B.string ()); // присоединяем к ней и вторую строку

return * ptr // возвращаем значение, а не указатель (разыменовали)

}


Дата добавления: 2015-07-20; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Друзья классов| Классификация паровых турбин.

mybiblioteka.su - 2015-2024 год. (0.005 сек.)