Страница 1 из 1
Реализовать перегрузку операций = и ==
Добавлено: 27 янв 2016, 20:04
Sereg
Вообщем есть такое задание
Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операций = и == .
ПОМОГИТЕ решить саму перегрузку!!!
Re: Реализовать перегрузку операций = и ==
Добавлено: 28 янв 2016, 06:52
Сионист
Тело любого перегруженного оператора зависит от:
1. Семантики операции. С этим всё понятно: присваивание и проверка на равенство.
2. Внутреннего формата данных. А вот этого то ты и не дал. Может у тебя строка на списке символов?
Конечно некоторые операторы можно реализовать через функции и другие операторы того же класса, например,
Код: Выделить всё
MyString &operator =(const MyString &s)
{
size_t L;
size_t i;
char c;
this->clear();
L=s.lenght();
for (i=0; i<L; ++i)
{
c=s[i];
(*this)+=c;
}
return *this;
}
bool operator ==(const MyString &s) const
{
size_t i;
size_t L;
size_t R;
L=this->length();
R=s.length();
if (L!=R)
{
return false;
}
for (i=0; i<L; ++i)
{
if (((*this)[i])!=(s[i]))
{
return false;
}
}
return true;
}
. Но не нужно. Лучше всё таки в таких операторах обращаться не к интерфейсу, а к внутренностям.
Re: Реализовать перегрузку операций = и ==
Добавлено: 28 янв 2016, 17:59
Romeo
Когда-нибудь ты всё же поймёшь, что в операторе = всегда необходимо делать проверка на неравенство адреса переданного объекта this.
Re: Реализовать перегрузку операций = и ==
Добавлено: 29 янв 2016, 05:07
Сионист
А ничего, что это пример, как делать не надо? О такой проверке я знаю давно. Вот только в этой фигне она не нужна: так и так плохо.