Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
1

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

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

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

P.S Наработок нет, так как даже не знаю с чего начать даже
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2012, 11:40
Ответы с готовыми решениями:

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

Перегрузка операторов
Задание такое-Составить описание класса для представления комплексных чисел. Обеспечить выполнение...

Перегрузка операторов
Доброй ночи! Изучаю перегрузку операторов. Создал класс Дробь, где в качестве данных выступают...

Перегрузка операторов
Вот задание b) Создать класс Set – множество целых чисел, используя динамическую память....

10
267 / 256 / 23
Регистрация: 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
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
267 / 256 / 23
Регистрация: 04.04.2012
Сообщений: 546
14.04.2012, 12:45 4
Ну, ты писал, что последнюю - компонентой, а я так не умею
0
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
14.04.2012, 12:48  [ТС] 5
Читай выше.компонентной функцией – операция (реализуется внутри класса), в виде простой функции – операции (реализуется вне класса).

В условие if(...) ставить равенство переменных?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.04.2012, 13:09 6
Цитата Сообщение от Aero93 Посмотреть сообщение
Добрый день! Интересует перегрузка операторов(--, !=, <<). Мне когда-то преподаватель объяснял через TPoint , но к сожалению забыл. Помогите реализовать перегрузку вышеуказанных операций(простой перегрузкой первые два(--,!=). Компонентной последнюю(<<) ). Заранее спасибо.
Для какого класса? Как его зовут, какие поля имеет, какова их семантика, что должно происходить при декременте, как хочешь сравнивать, в каком формате выводить (или это оператор сдвига?)? В случае, например, вектора можно сравнивать модули (длины) векторов, орты (единичные векторы, характеризующие направление), а можно одновременно то и другое. Вектор может быть представлен как в декартовых, так и в полярных, сферических и даже цилиндрических координатах, что также влияет на текст сравнения. А может надо реализовать сравнение полярных векторов с декартовыми? Или цилиндрических со сферическими? А декремент вектора, это сокращение модуля (длины), или поворот на некоторый угол? Если поворот, то по какой оси? И что такое простая и компонентная перегрузка? На сколько мне известно, вообще нет таких терминов. А может у тебя комплексные числа? Они тоже могут быть алгебраическими и тригонометрическими, что меняет текст сравнения. И могут сравниваться по модулю, по углу, по действительной части, по мнимой, или целиком. А может надо реализовать сравнение алгебраических с тригонометрическими? Или у тебя строки? Длинные арифметика? Какая: целочисленная, или дробная? А может векторные рисунки? Или звуковые треки? Надо сравнить голоса? Или слова? Или это программы на php и надо сравнить их на эквивалентность? А декремент - удаление последнего оператора? Или строки? Математические выражения? В какой нотации?
0
9 / 9 / 1
Регистрация: 19.12.2011
Сообщений: 35
14.04.2012, 13:57  [ТС] 7
Цитата Сообщение от taras atavin Посмотреть сообщение
Для какого класса? Как его зовут, какие поля имеет, какова их семантика, что должно происходить при декременте, как хочешь сравнивать, в каком формате выводить (или это оператор сдвига?)? В случае, например, вектора можно сравнивать модули (длины) векторов, орты (единичные векторы, характеризующие направление), а можно одновременно то и другое. Вектор может быть представлен как в декартовых, так и в полярных, сферических и даже цилиндрических координатах, что также влияет на текст сравнения. А может надо реализовать сравнение полярных векторов с декартовыми? Или цилиндрических со сферическими? А декремент вектора, это сокращение модуля (длины), или поворот на некоторый угол? Если поворот, то по какой оси? И что такое простая и компонентная перегрузка? На сколько мне известно, вообще нет таких терминов. А может у тебя комплексные числа? Они тоже могут быть алгебраическими и тригонометрическими, что меняет текст сравнения. И могут сравниваться по модулю, по углу, по действительной части, по мнимой, или целиком. А может надо реализовать сравнение алгебраических с тригонометрическими? Или у тебя строки? Длинные арифметика? Какая: целочисленная, или дробная? А может векторные рисунки? Или звуковые треки? Надо сравнить голоса? Или слова? Или это программы на php и надо сравнить их на эквивалентность? А декремент - удаление последнего оператора? Или строки? Математические выражения? В какой нотации?
Меня интересует простая перегрузка операторов... -- инкремент; != сравнение двух чисел. << - сдвиг, к примеру: b=a<<3 . Никаких наворотов. Езе раз повторюсь, простейшая перегрузка операторов. Ну может так наш преподаватель выражается... Но суть в этом: простая : выполняется вне класса; компонентная : выполняется в самом классе.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
14.04.2012, 17:11 9
Цитата Сообщение от zss Посмотреть сообщение
operatop
книгу почитайте
0
zss
14.04.2012, 20:44
  #10

Не по теме:

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

0
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
18.04.2012, 17:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 17:49
Помогаю со студенческими работами здесь

Перегрузка операторов
Никак не возьму в толк, почему оно не работает! // CG5.cpp : Defines the entry point for the...

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

Перегрузка операторов
Ошибка: &quot;error: invalid operands to binary expression ('Number *' and 'Number *') n3 = n1 * n2;&quot;...

Перегрузка операторов
Приветствую! Необходима помощь. Разработать класс Vec4 как вектор из 4-х float. Определить...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru