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

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

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

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

11.06.2014, 11:21. Просмотров 313. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "Operation.h"
using namespace std;
 
const int COUNT = 10;
int _tmain(int argc, _TCHAR* argv[])
{
    srand((unsigned int)time(NULL));
    Operation A(COUNT);
    Operation B(COUNT);
    A-=B;
    cout<<"Result A:"; A.showContent();
    cout<<"Result B:"; B.showContent();
    system("pause");
    return 0;
}



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

Перегрузка оператора + - C++
Осуществляю перегрузку оператора +. и вот почему-то член класса s меняет свою длину с 4 до 7 и мне вот это не понятно.. Подскажите,...

Перегрузка оператора = - C++
Ввести строку символов S1. Программа должна содержать перегруженную операцию “=”, использование которой скопирует S1 в S2 при следующих...

Перегрузка оператора [] - C++
Создал класс в котором массив указателей на другой класс, перегрузил оператор взятия индекса следующим образом: h-файл #ifndef...

Перегрузка оператора - - C++
В своём классе я перегрузил оператор -,но в функции,использующей вычитание возникает ошибка error C2678: бинарный &quot;-&quot;: не найден...

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

Перегрузка оператора () - C++
кто может подсказать как создать перегрузку что бы можно было работать с амссивввом в таком ввиде mass(3)=2 а не mass=2; если можно...

5
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
11.06.2014, 11:45 #2
хотелось бы посмотреть на саму реализацию класса
0
Al51193Sl
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 7
11.06.2014, 11:52  [ТС] #3
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Raznost.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "Operation.h"
using namespace std;
 
const int COUNT = 10;
int _tmain(int argc, _TCHAR* argv[])
{
    srand((unsigned int)time(NULL));
    Operation A(COUNT);
    Operation B(COUNT);
    A-=B;
    cout<<"Result A:"; A.showContent();
    cout<<"Result B:"; B.showContent();
    system("pause");
    return 0;
}
 
//Operation.h
//класс с перегруженным оператором -=
#pragma once
#include <vector>
#include <ctime>
#include <iostream>
#include <stdlib.h>  
using namespace std;
 
class Operation
{
public:
    Operation(int count);
    Operation operator -= (Operation vectorOut);
    void showContent();
    ~Operation(void);
private:
    vector<int> vectorIn;
};
 
 
//Operation.cpp
#include "stdafx.h"
#include "Operation.h"
 
Operation::Operation(int count)
{
    for (int i=0; i < count; i++) {
        vectorIn.push_back(rand()%100+1);
    }
    cout<<"Create: ";
    for(int i = 0; i < count; i++) cout << vectorIn[i] << "  ";
    cout<<endl;
}
//вычисляем разность каждого элемента в массиве, возвращаем указатель на себя
Operation Operation::operator -=(Operation vectorOut){
    for (int i=0; i< vectorIn.size(); i++){
        vectorIn[i] = vectorIn[i]-vectorOut.vectorIn[i];
    }
    return *this;
}
 
void Operation::showContent(){
    for(int i = 0; i < vectorIn.size(); i++) cout << vectorIn[i] << "  ";
    cout<<endl;
}
 
Operation::~Operation(void) {vectorIn.clear();}
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
11.06.2014, 12:00 #4
а что этот оператор (b=++a) должен делать?
0
Al51193Sl
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 7
11.06.2014, 12:25  [ТС] #5
jurok_85,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Raznost.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "Operation.h"
using namespace std;
 
const int COUNT = 10;
int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned int)time(NULL));
Operation A(COUNT);
Operation B(COUNT);
A-=B;
cout<<"Result A:"; A.showContent();
cout<<"Result B:"; B.showContent();
system("pause");
return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Operation.h
//класс с перегруженным оператором -=
#pragma once
#include <vector>
#include <ctime>
#include <iostream>
#include <stdlib.h> 
using namespace std;
 
class Operation
{
public:
Operation(int count);
Operation operator -= (Operation vectorOut);
void showContent();
~Operation(void);
private:
vector<int> vectorIn;
};
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
//Operation.cpp
#include "stdafx.h"
#include "Operation.h"
 
Operation::Operation(int count)
{
for (int i=0; i < count; i++) {
vectorIn.push_back(rand()%100+1);
}
cout<<"Create: ";
for(int i = 0; i < count; i++) cout << vectorIn[i] << " ";
cout<<endl;
}
//вычисляем разность каждого элемента в массиве, возвращаем указатель на себя
Operation Operation::operator -=(Operation vectorOut){
for (int i=0; i< vectorIn.size(); i++){
vectorIn[i] = vectorIn[i]-vectorOut.vectorIn[i];
}
return *this;
}
 
void Operation::showContent(){
for(int i = 0; i < vectorIn.size(); i++) cout << vectorIn[i] << " ";
cout<<endl;
}
 
Operation::~Operation(void) {vectorIn.clear();}
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.06.2014, 16:40 #6
Цитата Сообщение от Al51193Sl Посмотреть сообщение
(b=++a)
вызываем оператор = (его сгенерит компилятор можно не парится) в времы вызова мы начени определять аргументы и вызовется оператор++() преинкремент,
для него
C++
1
2
3
4
5
6
7
const Operation& operator++()
{
for (int i=0; i< vectorIn.size(); i++){
vectorIn[i]++;
}
return *this;
}
Добавлено через 2 минуты
C++
1
const Operation& operator -= (const Operation& vectorOut);
и это подправьте)

Добавлено через 2 минуты
Цитата Сообщение от Al51193Sl Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
Operation Operation::operator -=(Operation vectorOut)
{ 
for (int i=0; i< vectorIn.size(); i++)
{ 
vectorIn[i] = vectorIn[i]-vectorOut.vectorIn[i];
 }
 return *this;
 }
а Вас не напрягает что вообще гововоря size у this и size у vectorOut могут быть различными, хотя в мейни они и одинаковые, но все же
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 16:40
Привет! Вот еще темы с ответами:

Перегрузка оператора + - C++
Не могу заставить работать перегруженный оператор + в функции CMoveByVector Point.h: #define POINT_H #include &lt;iostream&gt; ...

Перегрузка оператора << - C++
Есть такой код. class matrix { public: ......; const double* operator(int) const; double* const operator(int); friend...

Перегрузка оператора << - C++
Здравствуйте форумчане, помогите исправить ошибку. Вообщем есть класс с перегруженным оператором &lt;&lt; . Category.h class...

Перегрузка оператора = - C++
Нужно перегрузить оператор так что бы в начале строки и в конце были квадратные скобки . Все почти работает только вот вывод на экран не...


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

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

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