Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Al51193Sl
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 7
1

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

11.06.2014, 11:21. Просмотров 363. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2014, 11:21
Ответы с готовыми решениями:

Перегрузка оператора +=
Создал класс дробь. Пытаюсь перегрузить оператор += (или -=, *=, /=) А компилятор выдаёт ошибку...

Перегрузка оператора
Привет, форумчане. Есть простой класс, в котором перегружается оператор '==' : #ifndef POINT_H...

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается Вот...

Перегрузка оператора *=
Переписываю свой матричный калькулятор и решил внести в него перегрузку оператора *= Matrix*...

Перегрузка оператора == и др
C++ Builder ругаеться на перегрузку операторов. На mingw32-g++ все компилилось нормально. Пример...

5
jurok_85
280 / 261 / 192
Регистрация: 21.02.2013
Сообщений: 624
Завершенные тесты: 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
280 / 261 / 192
Регистрация: 21.02.2013
Сообщений: 624
Завершенные тесты: 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
651 / 572 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
Завершенные тесты: 2
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
11.06.2014, 16:40
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 16:40

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

Перегрузка оператора +=
У меня имеется структура и метод, который вызывается след образом: A.plus_and_minus(B); Есть...

Перегрузка оператора +
String String::operator + (String &amp; sg2) { String tmp; tmp.str = new char ; strcpy (tmp.str,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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