Реализовать перегрузку операций = и ==

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Sereg
Сообщения: 8
Зарегистрирован: 04 дек 2015, 20:25

Вообщем есть такое задание
Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операций = и == .
ПОМОГИТЕ решить саму перегрузку!!!
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Тело любого перегруженного оператора зависит от:
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;
}
. Но не нужно. Лучше всё таки в таких операторах обращаться не к интерфейсу, а к внутренностям.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Когда-нибудь ты всё же поймёшь, что в операторе = всегда необходимо делать проверка на неравенство адреса переданного объекта this.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

А ничего, что это пример, как делать не надо? О такой проверке я знаю давно. Вот только в этой фигне она не нужна: так и так плохо.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить