При выполнении эта программа выводит на экран строку
Следует иметь в виду, что операторы
а = "Этого пока делать нельзя.";
Но класс
Для расширения круга операций, поддерживаемых классом
class str_type {
char string{80];
public:
str_type(char *str = "") { strcpy(string, str); }
str_type operator+(str_type str); /* конкатенация объектов типа str_type*/
str_type operator+(char *str); /* конкатенация объекта класса str_type со строкой с завершающим нулем */
str_type operator=(str_type str); /* присваивание одного объекта типа str_type другому */
char *operator=(char *str); /* присваивание строки с завершающим нулём объекту типа str_type */
void show_str() { cout << string; }
};
Затем реализуем перегрузку операторных функций
// Присваивание строки с завершающим нулем объекту типа str_type.
str_type str_type::operator=(char *str)
{
str_type temp;
strcpy(string, str);
strcpy(temp.string, string);
return temp;
}
// Конкатенация строки с завершающим нулем с объектом типа str_type.
str_type str_type::operator+(char *str)
{
str_type temp;
strcpy(temp.string, string);
strcat(temp.string, str);
return temp;
}
Внимательно рассмотрите код этих функций. Обратите внимание на то, что правый аргумент является не объектом типа
str_type a, b, c;
a = "Привет всем"; /* присваивание строки с завершающим нулем объекту */
с = а + " Георгий"; /* конкатенация объекта со строкой с завершающим нулем */
Следующая программа включает дополнительные определения операторов
// Усовершенствование строкового класса.
#include
#include
using namespace std;
class str_type {
char string[80];
public:
str_type(char *str = "") { strcpy(string, str); }
str_type operator+(str_type str);
str_type operator+(char *str);
str_type operator=(str_type str);
str_type operator=(char *str);
void show_str() { cout << string; }
};
str_type str_type::operator+(str_type str)
{
str_type temp;
strcpy(temp.string, string);
strcat(temp.string, str.string);
return temp;
}
str_type str_type::operator=(str_type str)
{
strcpy(string, str.string);