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

Перегрузка оператора присваивания

25.06.2016, 10:21. Показов 848. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех. Не могли бы подсказать как переопределить оператор присваивания. То что искал, так там написано в общем о переопределении.

Существует класс rational, хранящий рациональные числа.

C++
1
2
3
4
5
6
class rational{
private:
    int chisl;
    int znam;
    char razd;
}
Мне нужно, допустим если в коде написано что-то типа:

C++
1
2
rational a;
a=5\6;
то цифра 5 была присвоена a.chisl, а цифра 6 присвоена a.znam.

Как это сделать с помощью обычной функции это понятно, но как сделать, чтобы это было именно оператором?

А именно не понятно как компилятор проанализирует, что эти две цифры разделены этим знаком и что куда присваивать?

Были идеи, что оператор должен принять символ \ за char, но тогда бы его нужно было писать 5'\'6, а в коде так не пишется.

Не могли бы пожалуйста объяснить принцип переопределения оператора присваивания или может даже пример у кого есть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2016, 10:21
Ответы с готовыми решениями:

Перегрузка оператора присваивания
Добрый вечер. Есть задание: Нужно так перегрузить оператор =, чтобы можно было элементу одного...

Перегрузка оператора присваивания
мне надо было реализовать конструкторы, деструктор, оператор присваивания, функции ввода /...

Перегрузка оператора присваивания
Здравствуйте! Помогите, пожалуйста разобраться с перегрузкой оператора присваивания. Нужно...

Перегрузка оператора присваивания
Доброго времени суток! Возник вопрос по поводу перегрузки оператора присваивания. Пример...

2
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
25.06.2016, 10:39 2
ем сомниваюсь что у вас получится я бы пробовал пару толкать но думаю вам так не подойдёт

Добавлено через 2 минуты
чет типа того
C++
1
2
3
4
5
6
7
8
9
10
rational& operator = (std::pair<int, int> number)
{
chisl = number.first;
znam = number.second;
}
...
 
2
rational a;
a=make_pair(5,6);
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
25.06.2016, 10:53 3
DSLS, можно сделать как-нибудь вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class rational {
public:
    int chisl;
    int znam;
 
    rational(int c, int z) : chisl(c), znam(z) {}
};
 
rational operator /(int c, const rational &r) {
    return rational(c * r.znam, r.chisl);
}
 
rational operator "" _r(unsigned long long d)
{
    return rational(static_cast<int>(d), 1);
}
 
 
int main() {
    rational r= 5 / 6_r;
    return 0;
}
1
25.06.2016, 10:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2016, 10:53
Помогаю со студенческими работами здесь

Перегрузка оператора присваивания
struct pointer_command { public: void * x; public: void set(void * y){x = y; } void...

Перегрузка оператора присваивания
Доброго времени суток всем! Никак не могу правильно написать перегрузку оператора присваивания. ...

Перегрузка оператора присваивания
Вот есть такой класс template&lt;typename TT&gt; class Matrix { public:...

Перегрузка оператора присваивания
Добрый вечер ! Нужна помощь по небольшому теоретико-практическому вопросу. Опять же вопрос по...


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

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