Розглянемо інший приклад перезавантаження оператора. Тепер це буде оператор == (дорівнює), ми використовуватимемо його для об’єктів класу String, повертаючи 1, коли вони одинакові, і 0 – коли різні. Далі приведений лістінг програми 10.8, яка і здійснює перезавантаження.
#include <iostream.h>
#include <conio.h>
#include <bios.h>
#include <string.h>
#include <stdlib.h>
class String //clas dla ryadkiv
{private:
enum {SZ=80}; // max dla ryadkiv
char str[SZ]; //masyv dla ryadka
public:
String ()
{strcpy(str,””);}
String(char s[])
{strcpy(str,s);}
void display() const
{cout <<str;}
void getstr()
{cin.get(str,SZ);}
//operator
String operator+(String ss) const
{String temp;
if (strlen(str)+strlen(ss.str)<SZ)
{strcpy(temp.str,str);
strcat(temp.str,ss.str);
}
else
{cout <<”\nПереповнення!”;
exit(1);}
return temp;
}
int operator==(String ss) const
{return (strcmp(str,ss.str)==0)?1:0;}
};
//////////////////
int main()
{clrscr();
String s1=”yes”;
String s2=”no”;
String s3;
cout <<”Введіть ‘yes’ or ‘no’:”;
s3.getstr();
if (s3==s1)
cout<<”Введено yes\n”;
else
if (s3==s2)
cout<<”Введено no\n”;
else
cout<<”Помилка вводу\n”;
bioskey(0);
return 0;
}
Програма 10.8
Функція operator==() використовує бібліотечну функцію strcmp() для порівняння двох рядків. Ця функція повертає 0, якщо рядки рівні, від’ємне число, коли перший рядок менший (в лексикографічному сенсі) за другий, і додатнє число в протилежному випадку.
Інші операції порівняння теж можуть бути перевизна для порівняння рядків.