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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
#1

Классы,перегрузка. - C++

15.10.2011, 21:16. Просмотров 1630. Ответов 4
Метки нет (Все метки)

Всем привет!
Делаю класс комплексных чисел,появился вопрос.
Весь класс писать смысла нет,вопрос не в этом.
Вот он класс:

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
class Cplex
{
    public:
    double re;
    double im;
    //Конструкторы
    Cplex () {}
    Cplex (double r) {re = r; im = 0;}
    Cplex (double a,double b) {re = a; im = b;}
//Перегружаем операторы
/*Если писать вот так,то у меня выдается ошибка.*/
Cplex operator + (Cplex a,const Cplex b)
{
     a.re += re + b.re;
     b.im += im + b.im;
 
return a;
}
}
int main()
{
Cplex z1(1,3);
Cplex z2(2,3);
Cplex z3 = z1+z2;
cout << z3.re << " " << z3.im;
}
В итоге выходят ошибки о том,что Cplex operator + (Cplex a,const Cplex b) must take either zero or one argument и no match for operator - in z1 - z2

В связи с этим у меня вопрос.
Через почему такое?
Если делать так,то все тип-топ
C++
1
2
3
4
5
6
7
8
9
Cplex operator + (Cplex &c) // перегрузка оператора сложения
        {
                Cplex temp;
 
                temp.re = re + c.re;
                temp.im = im + c.im;
 
                return temp;
        }
Прошу вашей помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Классы,перегрузка. (C++):

Классы и перегрузка - C++
Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой...

Классы. Перегрузка операций. С++ - C++
Разработайте программу на языке С++, используя пользовательский тип данных – классы и перегрузку операций. Вариант 20. Создайте класс...

Классы: перегрузка операторов - C++
Добрый день. Есть задание - Определить класс «матрица». Определить операции над матрицами : ++ определение суммы матрицы +...

Классы перегрузка операций - C++
Доброго времени суток. Помогите разобраться, что я не так пишу? По задаче мне нужно перегрузить оператор != (работа со строками) На...

Перегрузка операция + вложенные классы - C++
Уже второй раз прошу помощи, никто толком не может помочь( Как правильно реализовать операцию &quot;-&quot; класса Time в таком примере? ...

Классы и методы, перегрузка операторов == и != - C++
не могу разобраться с перегрузкой операторов == или != для 2 массивов типа char и int состоящих из 5 элементов. при составлении кода...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
15.10.2011, 21:23 #2
Rexer, это особенности перегрузки операторов как членов класса. Если вы перегружаете оператор как член класса, то один его операнд (левый в случае сложения. к примеру) передается в него через указатель this, а не через параметры функции. Поэтому прототипы унарных операторов членов класса не имеют параметров вообще, а бинарные имеют один параметр
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
16.10.2011, 01:11  [ТС] #3
Большое вам спасибо!
Вы мне очень помогли.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.10.2011, 01:19 #4
Цитата Сообщение от Rexer Посмотреть сообщение
C++
1
2
3
Cplex () {}
 Cplex (double r) {re = r; im = 0;}
 Cplex (double a,double b) {re = a; im = b;}
первые два конструктора излишни, достаточно одного такого
C++
1
Cplex (double real = 0.0, double imag = 0.0) {re = a; im = b;}
а перегрузку
Цитата Сообщение от Rexer Посмотреть сообщение
C++
1
Cplex operator + (Cplex &c)
C++
1
2
3
4
Cplex operator + (const Cplex & c) const
{
    return Cplex(re + c.re, im + c.im);
}
LosAngeles
Заблокирован
16.10.2011, 06:14 #5
Цитата Сообщение от Jupiter Посмотреть сообщение
Cplex operator + (const Cplex & c) const
Cplex const operator+(...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 06:14
Привет! Вот еще темы с ответами:

Наследование. Классы. Перегрузка '=' и иже с ними - C++
Всем доброго самого. Вопрос для уточнения. Есть класс: class A { public: A &amp; operator = (const A...

Оператор суммирования (классы, перегрузка операторов) - C++
#include &lt;iostream&gt; class mat { public: mat() { var = 0; } mat(int a) { var = a; } ~mat() { } void set(int b) { var =...

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

Классы, матрицы, перегрузка операторов, дружественные функции - C++
Гляньте пожалуйста, как получилось сделать задание, что неверно: Создать класс, в котором перегрузить операторы: &amp; для...


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

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

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