Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 12:11   #1
cj_loman
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 11
По умолчанию Перегрузка операторов ==,-,~. Кто поможет ???

Всем доброго времени суток. Помогите пожалуйста, нужно перегрузить операторы сравнения строки, удаления из символьной строки указанного символа и переворота строки (==,- и ~ соответственно). Подскажите как это реализовать. Заранее благодарен. Язык - С++.

Последний раз редактировалось cj_loman; 19.05.2011 в 12:14.
cj_loman вне форума Ответить с цитированием
Старый 19.05.2011, 12:22   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Вот очень полезная ссылка.
Или вот еще.

Операторы перегружаются в точности так, как и функции, только вместо названия функции следует operator ==, например, или что там вы еще хотите перегрузить.
mMAg вне форума Ответить с цитированием
Старый 19.05.2011, 12:31   #3
cj_loman
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от mMAg Посмотреть сообщение
Вот очень полезная ссылка.
Или вот еще.

Операторы перегружаются в точности так, как и функции, только вместо названия функции следует operator ==, например, или что там вы еще хотите перегрузить.
Спасибо за ответ)) но возник один вопрос:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>

class string

{
public:
string(char *);
void chr_minus(char);
void show_string(void);
string() {buff[0]='\0';}
string(const char* str) {strcpy(buff,str);}
~string() {}
bool operator== (const char* str)
{
if(strcmp(str,buff) == 0) return true;
else return false;
}
const char* size_type;
int length;
void invert_string( string &a )
{
string::size_type= a.size();
for( string::size_type i = 0; i < (length/2); ++i )
{
std::swap( a[i], a[length - i - 1] );
}
}

std::string str = "abcdefg";
invert_string(str);
private:
char buff[256];
char data[256] ;
};

string::string(char *str)

{
strcpy(data, str);
}
void string::chr_minus(char letter)

{
char temp[256] ;
int i, j;
for (i = 0, j = 0; data[i]; i++)
if (data[i] != letter)
temp[j++] = data[i];
temp[j] = NULL;
strcpy(data, temp);
}

void string::show_string()

{
printf("\n%s",data);
}

int main()

{
setlocale(LC_ALL, "Russian");

string title( "Uchimsya programmirovat na C++");
string lesson("Peregruzka operatorov");
title.show_string() ;
lesson.show_string();
lesson.chr_minus('p');
lesson.show_string();
getch();
return 0;
}
Вот мой код =) хорошо, если оператор + или - есть пример с перегрузкой, то как же быть тогда с ~ ???
P.S. на programmersclub уже был ))
cj_loman вне форума Ответить с цитированием
Старый 19.05.2011, 13:42   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Если найдете что за оператор ~ , то расскажете потом ок?

Единстсвенное предположение можно сделать, это то, что вам необходимо перегрузить деструктор.

Код:
class Tue
{
  Tue() {}
  ~Tue() {}
}
что-то типа такого
mMAg вне форума Ответить с цитированием
Старый 19.05.2011, 15:03   #5
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

~ - унарный оператор (побитовая инверсия)
Код:
string& operator~() {
std::reverse(str,str+len);
return *this;
}
примерно так
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++,перегрузка операторов colesik Помощь студентам 0 23.12.2010 23:07
Перегрузка операторов(С++) Сергей AfeR Помощь студентам 0 16.06.2010 18:34
Перегрузка операторов. Macb3th Общие вопросы C/C++ 5 01.04.2010 21:14
Перегрузка операторов (С++) Перчитель Помощь студентам 1 03.12.2008 18:46
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15