Страница 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
Сионист
А ничего, что это пример, как делать не надо? О такой проверке я знаю давно. Вот только в этой фигне она не нужна: так и так плохо.