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

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

Войти
Регистрация
Восстановить пароль
 
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
#1

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

16.07.2013, 14:17. Просмотров 667. Ответов 12
Метки нет (Все метки)

Помогите с задачей на перегрузку операторов. (ппц мозговынос).

1)Создать class Mouse со свойством int power.

C++
1
2
3
4
5
6
7
8
 #include <iostream>
#include <conio.h>
using namespace std;
 
class Mouse
{
      public:
             int power;};
2)Создать class Cat со свойством int power.

C++
1
2
3
4
class Cat
{
      public:
             int power;};
3)Перегрузить в class Cat оператор += , который принимает указатель на мышь. Сила кошки увеличивается на половину силы мышки. Указатель на мышь удаляется. (кошка съедает мышь).

Помогите с 3 пунктом. Заранее спасибо.

Добавлено через 22 минуты
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 14:17     Перегрузка операторов
Посмотрите здесь:

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

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

перегрузка операторов - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class CBox { private: double Width; double Height; ...

Перегрузка операторов с++ - C++
Доброго времени суток!Вот у меня перегрузка оператора +.Задание сделапть пергрузку так чтобы к строке можно было добавить символ и к...

Перегрузка операторов - C++
Перегрузить оператор ввода, вывода для строки; Перегрузить операторы: +, =, +=, &gt;, &lt;, == .

Перегрузка операторов - C++
Здравствуйте! Сейчас читаю книгу: &quot;Искусство программирование на С++&quot; Шилдта. Часто встречается перегрузка. Заметил, что в некоторых...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.07.2013, 14:21     Перегрузка операторов #2
C++
1
2
3
4
5
6
Cat& operator+=(const Mouse& m)
{
    (*this).power+=(*m).power;
    delete m;
    return *this;
}
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
16.07.2013, 14:30  [ТС]     Перегрузка операторов #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
C++
1
2
3
4
5
6
Cat& operator+=(const Mouse& m)
{
    (*this).power+=(*m).power;
    delete m;
    return *this;
}
ошибка выходит бро.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
16.07.2013, 14:34     Перегрузка операторов #4
Цитата Сообщение от MasterYo Посмотреть сообщение
ошибка выходит бро.
m - это ссылка на Mouse, а не указатель
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.07.2013, 14:37     Перегрузка операторов #5
А, ну да
C++
1
Cat& operator+=(Mouse* m)
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
16.07.2013, 14:44  [ТС]     Перегрузка операторов #6
в main так написать?

C++
1
2
3
4
5
6
7
8
9
int main()
{
    Cat Lucy;
    Mouse Tom;
    Lucy.power=15;
    Tom.power=8;
    cout<<Lucy.power+=Tom.power;
    getch();
}
Добавлено через 37 секунд
а не кстати половина power же должно быть

Добавлено через 53 секунды
Цитата Сообщение от MasterYo Посмотреть сообщение
Сила кошки увеличивается на половину силы мышки
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
16.07.2013, 14:46     Перегрузка операторов #7
ViktorKozlov, лучше так
C++
1
2
3
4
5
6
7
Cat& operator+=(const Mouse*& m)
{
    (*this).power+=(*m).power;
    delete m;
    m = NULL; // nullptr, if C++11
    return *this;
}
хотя это не правильно (смысле в задании косяк). Так не делается, если я выделяю память, то я же должен ее освободить, а не какой-то Cat в каком-то операторе. К тому же Mouse* может указывать на стек, а не heap, преподы не думают, что пишут.
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
16.07.2013, 14:49     Перегрузка операторов #8
Цитата Сообщение от MasterYo Посмотреть сообщение
ошибка выходит бро.
Ну так функция принимает константный указатель:
C++
1
Cat& operator+=(const Mouse& m)
Может я и ошибаюсь, но в теле ф-и вы переменную переданную по константной ссылке не удалите. Попробуйте так:
C++
1
2
3
4
5
6
Cat& operator+= (mause* m)
{
    this->power += m->power/2;
    delete m;
    return *this;   
}
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
16.07.2013, 14:53  [ТС]     Перегрузка операторов #9
ну еще же половина силы мыши должна прибавиться к кошке

Добавлено через 40 секунд
Ilot, ок

Добавлено через 2 минуты
ошибку выдает снова
Ilot
Модератор
Эксперт С++
1789 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
16.07.2013, 15:00     Перегрузка операторов #10
Ну так напишите какая ошибка. У меня мой код нормально компилируется:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<windows.h>
#include<iostream>
#include<conio.h>
using namespace std;
//***********************************************************************************//
class mause
{   
public:
    int power;
    mause(): power(4)
    {}
    ~mause()
    { cout << "Объект удален!\n"; }
};
class Cat
{
public:
    int power;
    Cat(): power(8)
    {}
    Cat& operator+= (mause* m)
    {
        this->power += m->power/2;
        delete m;
        return *this;   
    }
};
//***********************************************************************************//
int main() 
{
    mause *m1 = new mause;
    Cat c1;
 
    c1 += m1;
    cout << c1.power;
 
    getch();
    return 0;
}
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
16.07.2013, 15:03     Перегрузка операторов #11
C++
1
2
3
4
5
6
7
8
9
10
11
class Cat
  {
  public:
      int power;
      Cat& operator += (Mouse* m)
        {
        this->power += m->power/2; // this->power = this->power + m->power/2;
        delete m;
        return *this;
        };
  };
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
17.07.2013, 17:49  [ТС]     Перегрузка операторов #12
Новое задание: перегрузить +=, который принимает указатель на кошку. Возвращ-ся указатель на кошку победителя. Силы обеих кошек уменьшаются. (типа кошки дерутся, между собой, и в конце концов у обеих силы уменьшаются)

C++
1
2
3
4
Cat operator += (Cat* a, Cat* b)
{
  ..... //???
}
Добавлено через 22 минуты
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2013, 23:06     Перегрузка операторов
Еще ссылки по теме:

перегрузка операторов - C++
Имеется такая программа: class reversion { vector&lt;int&gt; mass1; vector&lt;int&gt; mass2; vector&lt;int&gt; rev1; vector&lt;int&gt; rev2; ...

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

Перегрузка операторов - C++
Привет, ребят! Помогите разобраться с перегрузкой, а то преподы нынче и сами ничего не знают. Вот. Имеем три файла (ну если кто захочет...

Перегрузка операторов - C++
Реализуйте класс CTime , моделирующий время суток ( количество часов , минут и секунд). Каркас класса : / / Моделирует время суток ,...

Перегрузка операторов 2 - C++
Пишу класс комплексных чисел. И возникла проблема.Я перегрузил операторы +-*/. Но когда использую их в строке типа a=b+c*d - где все...


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

Или воспользуйтесь поиском по форуму:
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
17.07.2013, 23:06     Перегрузка операторов #13
C++
1
2
3
4
5
6
7
8
9
Cat *operator += (Cat* a, Cat* b)
{
  ..... //???
  
    if (a->power > b->power)
        return a;
    else
        return b;
}
Yandex
Объявления
17.07.2013, 23:06     Перегрузка операторов
Ответ Создать тему
Опции темы

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