Вообщем есть такое задание
Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операций = и == .
ПОМОГИТЕ решить саму перегрузку!!!
Реализовать перегрузку операций = и ==
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Тело любого перегруженного оператора зависит от:
1. Семантики операции. С этим всё понятно: присваивание и проверка на равенство.
2. Внутреннего формата данных. А вот этого то ты и не дал. Может у тебя строка на списке символов?
Конечно некоторые операторы можно реализовать через функции и другие операторы того же класса, например,. Но не нужно. Лучше всё таки в таких операторах обращаться не к интерфейсу, а к внутренностям.
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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
А ничего, что это пример, как делать не надо? О такой проверке я знаю давно. Вот только в этой фигне она не нужна: так и так плохо.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.