Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
#1

Перегрузка операторов - C++

14.04.2012, 11:40. Просмотров 1874. Ответов 10
Метки нет (Все метки)

Добрый день! Интересует перегрузка операторов(--, !=, <<). Мне когда-то преподаватель объяснял через TPoint , но к сожалению забыл. Помогите реализовать перегрузку вышеуказанных операций(простой перегрузкой первые два(--,!=). Компонентной последнюю(<<) ). Заранее спасибо.

P.S Наработок нет, так как даже не знаю с чего начать даже
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2012, 11:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов (C++):

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this - C++
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в зависимости от чего зависит агрумент при...

Перегрузка операторов - C++
Доброго времени суток! Столкнулся с такой проблемой, перегрузка операторов. Имею работающий код, но не смог сделать по своему заданию. ...

Перегрузка операторов - C++
В общем задание следующее: Создайте класс chess (шахматы), в котором хранятся поля шахматной доски x, y (целые числа, лежащие в диапазоне...

Перегрузка операторов - C++
Решите пожалуйсто задачу: Разработайте программу, в которой реализована перегрузка оператора «^». Оператор «^» должен возводить...

[c++] Перегрузка операторов - C++
Не работает. #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #pragma argsused struct FazzyNumber { double x; double x1,x2; ...

C++ перегрузка операторов - C++
люди такая ситуация кто может в краце объясните перегрузку операторов мне например надо перегрузить оператор умножения что бы умножить...

10
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
14.04.2012, 12:11 #2
Ну, первые два:
C++
1
2
3
4
5
ClassName ClassName::operator ++()
{
.....//Здесь пишем, что он должен делать
return *this;
}
C++
1
2
3
4
5
6
bool ClassName::operator !=()
{
if(...)//Пишем условие
return true;
return false;
}
Как перегружать << -- не знаю.
1
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
14.04.2012, 12:38  [ТС] #3
Помоему, тогда перегрузка -- будет так же, как и ++, только делать другую операцию...

C++
1
2
3
4
5
ClassName ClassName::operator --()
{
 buff = buff -1;
return *this;
}
C++
1
2
3
4
5
6
bool ClassName::operator !=()
{
if(...)//Пишем условие //сюда условие равенства? или же неравенства? 
return true;
return false;
}
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
14.04.2012, 12:45 #4
Ну, ты писал, что последнюю - компонентой, а я так не умею
0
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
14.04.2012, 12:48  [ТС] #5
Читай выше.компонентной функцией – операция (реализуется внутри класса), в виде простой функции – операции (реализуется вне класса).

В условие if(...) ставить равенство переменных?
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2012, 13:09 #6
Цитата Сообщение от Aero93 Посмотреть сообщение
Добрый день! Интересует перегрузка операторов(--, !=, <<). Мне когда-то преподаватель объяснял через TPoint , но к сожалению забыл. Помогите реализовать перегрузку вышеуказанных операций(простой перегрузкой первые два(--,!=). Компонентной последнюю(<<) ). Заранее спасибо.
Для какого класса? Как его зовут, какие поля имеет, какова их семантика, что должно происходить при декременте, как хочешь сравнивать, в каком формате выводить (или это оператор сдвига?)? В случае, например, вектора можно сравнивать модули (длины) векторов, орты (единичные векторы, характеризующие направление), а можно одновременно то и другое. Вектор может быть представлен как в декартовых, так и в полярных, сферических и даже цилиндрических координатах, что также влияет на текст сравнения. А может надо реализовать сравнение полярных векторов с декартовыми? Или цилиндрических со сферическими? А декремент вектора, это сокращение модуля (длины), или поворот на некоторый угол? Если поворот, то по какой оси? И что такое простая и компонентная перегрузка? На сколько мне известно, вообще нет таких терминов. А может у тебя комплексные числа? Они тоже могут быть алгебраическими и тригонометрическими, что меняет текст сравнения. И могут сравниваться по модулю, по углу, по действительной части, по мнимой, или целиком. А может надо реализовать сравнение алгебраических с тригонометрическими? Или у тебя строки? Длинные арифметика? Какая: целочисленная, или дробная? А может векторные рисунки? Или звуковые треки? Надо сравнить голоса? Или слова? Или это программы на php и надо сравнить их на эквивалентность? А декремент - удаление последнего оператора? Или строки? Математические выражения? В какой нотации?
0
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
14.04.2012, 13:57  [ТС] #7
Цитата Сообщение от taras atavin Посмотреть сообщение
Для какого класса? Как его зовут, какие поля имеет, какова их семантика, что должно происходить при декременте, как хочешь сравнивать, в каком формате выводить (или это оператор сдвига?)? В случае, например, вектора можно сравнивать модули (длины) векторов, орты (единичные векторы, характеризующие направление), а можно одновременно то и другое. Вектор может быть представлен как в декартовых, так и в полярных, сферических и даже цилиндрических координатах, что также влияет на текст сравнения. А может надо реализовать сравнение полярных векторов с декартовыми? Или цилиндрических со сферическими? А декремент вектора, это сокращение модуля (длины), или поворот на некоторый угол? Если поворот, то по какой оси? И что такое простая и компонентная перегрузка? На сколько мне известно, вообще нет таких терминов. А может у тебя комплексные числа? Они тоже могут быть алгебраическими и тригонометрическими, что меняет текст сравнения. И могут сравниваться по модулю, по углу, по действительной части, по мнимой, или целиком. А может надо реализовать сравнение алгебраических с тригонометрическими? Или у тебя строки? Длинные арифметика? Какая: целочисленная, или дробная? А может векторные рисунки? Или звуковые треки? Надо сравнить голоса? Или слова? Или это программы на php и надо сравнить их на эквивалентность? А декремент - удаление последнего оператора? Или строки? Математические выражения? В какой нотации?
Меня интересует простая перегрузка операторов... -- инкремент; != сравнение двух чисел. << - сдвиг, к примеру: b=a<<3 . Никаких наворотов. Езе раз повторюсь, простейшая перегрузка операторов. Ну может так наш преподаватель выражается... Но суть в этом: простая : выполняется вне класса; компонентная : выполняется в самом классе.
0
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 1
14.04.2012, 14:43 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Class A
{
private:
   int x;
public:
 friend A operatop--(A);
 friend A operatop<<(A,int);
 friend bool operatop!=(A,A);
};
A operatop--(A a)
{
    a.x--;
    return a;
}
A operatop<<(A a,int n)
{
   a.x<<=n;
   return a;
}
bool operatop!=(A a1,A a2)
{
   if(a1.x!=a2.x)return true;
   return false;
}
1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
14.04.2012, 17:11 #9
Цитата Сообщение от zss Посмотреть сообщение
operatop
книгу почитайте
0
zss
14.04.2012, 20:44
  #10

Не по теме:

Цитата Сообщение от Dekio Посмотреть сообщение
книгу почитайте
Ну, бывает, чего уж там...

0
Aero93
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
18.04.2012, 17:49  [ТС] #11
Помогите реализовать это:через указанные выше операторы надо:1) присвоить полям объекта "а" поля предыдущего по списку объекта; 2)Если В.[кол-во]!=C[кол-во], то А=В+С, иначе А=0;
3)A.[name]=(B.[name]<<C.[name](на кол-во символов объекта "С" поля name));
A.[maker]=B.[maker];
A.[sell]=B.[sell];

Как я понял , надо в классе создать в private sell, name,maker .
Объявить конструктор закинуть данные в эти переменные(через this->), сделать массив класса(для первого). И дальше оперировать с этими данными?

Буду очень благодарен.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2012, 17:49
Привет! Вот еще темы с ответами:

перегрузка операторов - C++
Всем привет. Дошел до темы перегрузки операторов и возникло два вопроса. Первый: Чем отличается вот этот код String ...

Перегрузка операторов - C++
В общем учу эту тему и ввожу код один в один как в уроке, но в уроке он компилится, а у меня нет. Ругается на &quot;c1++;&quot;, подскажите...

Перегрузка операторов - C++
Создайте класс Fraction (обыкновенная дробь), в котором реализовать перегрузку: оператора суммирования дробей, оператора суммирования дроби...

Перегрузка операторов ++ - C++
доброго времени суток. есть утечка памяти как я понимаю, но не мойму почему. о чем программа: есть обьект типа MString. В этом классе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
18.04.2012, 17:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru