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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать класс для работы с длинными числами http://www.cyberforum.ru/cpp-beginners/thread4798.html
Помогите, пожалуйста, сделать хотя бы один из нижеперечисленных вопросов. Нужно создать класс для работы с длинными числами(сложение, деление и т.д.). Класс-то я создал, а вот как сделать эти вопросы, не знаю. Нужно: 1) определить операции ввода/вывода 2) для класса определить оператор присваивания и конструктор копирования 3) класс должен быть инициализирован целым числом -...
C++ В С++ не работает графический режим Кто может лии желает помочь, ответьте, почему у меня в С++ не работает графический режим. Пишет, что не определён графический драйвер. Хотя в Универе - всё пашет.. Сам компилятор слит оттуда же (с универа). Заранее - спасибо! http://www.cyberforum.ru/cpp-beginners/thread4767.html
Конструкторы в списках и конфликт имён C++
Здравтсвуйте, уважаемые программисты, меня волнуют следующие вопросы: 1) Мне нужны примеры применения конструкторов в списках. Я нашёл в книге, но там очень замудрённо... explicit list (const Allocator &a = Allocator () ); //конструктор создаёт пустой список explicit list (size_type num, const T &val=T(), const Allocator &a=Allocator()); //создаёт список, состоящий из num элементов, имеющих...
Возник вопрос? C++
Столкнулся с кодом программы для работы с ссылка и перегрузками функций, но при перегрузке одной функции программа не работает, хотя ошибок я не заметил. Программа простая совсем. вот код: #include iostream; using namespace std; #include conio.h;//для getche(); struct chet//структура { float par1; };
C++ Тригонометрические функции http://www.cyberforum.ru/cpp-beginners/thread4705.html
Всем привет. Я новичок в С++. Поставил себе задачу написать прогу построений и анализа гриафиков. Проблема, может и глупая, но я не могу вызвать ни одной простой тригонометрической функции. Он пишет, что-то вроде: неизвестный символ (или слово). (Среда Borland C++ v.6)
C++ Помогите плиз. Возникла большая проблема Народ, я делаю обучающе-тестирующюю прогу по С++. У меня возникла проблема: У меня есть поле Memo, в котором содержится содержание вопроса, и 4 поля Edit, в которых у меня варианты ответов. Как сделать, чтобы при нажатии на кнопке "Сохранить" данные записались отдельно, то есть вопрос в один файл, а ответы в другой? Варианты ответов необходимо записать каждый на новой строке файла, так как я... подробнее

Показать сообщение отдельно
Ilou
9 / 9 / 0
Регистрация: 29.03.2007
Сообщений: 19

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

30.11.2007, 20:43. Просмотров 1968. Ответов 1
Метки (Все метки)

Объясните пожалуйста строку из проги
C++
1
tmp.set_arr(i) = array[i] * obj.get_arr(i);
И что за запись, например, tmp.set_arr(i) - то есть перед изменением значения объекта сначало вызывается функция..??

Вот сам исходник проги:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include  iostream;
using namespace std;
 
class arr
{
  public:
    arr(int number);
    // Копирующий конструктор
    arr(const arr &obj);
    ~arr();
    int get_count();
    int get_arr(int index);
    int &set_arr(int index);
 
    arr operator+(arr obj);
    arr operator-(arr obj);
    arr operator/(arr obj);
    arr operator*(arr obj);
  private:
    int count;
    int *array;
};
 
arr::arr(int number)
{
  count = number;
  array = new int[number];
  for(int i = 0; i  number; i++) array[i] = i*i;
}
arr::~arr()
{
  delete [] array;
}
int arr::get_count()
{
  return count;
}
int arr::get_arr(int index)
{
  if(index ;= 0 && index  count) return array[index];
  else return -1;
}
int &arr::set_arr(int index)
{
  if(index ;= 0 && index  count) return array[index];
  else
  {
    cout  "Ошибка: выход за границы массива\n";
  }
}
 
// Копирующий конструктор
arr::arr(const arr &obj)
{
  cout  "Вызов копирующего конструктора\n";
  count = obj.get_count();
  array = new int[obj.get_count()];
  for(int i = 0; i  obj.get_count(); i++)
  {
    array[i] = obj.get_arr(i);
  }
}
 
arr arr::operator+(arr obj)
{
  int min_count = count;
  if(min_count ; obj.get_count()) min_count = obj.get_count();
  arr tmp(min_count);
  for(int i = 0; i  min_count; i++)
  {
    tmp.set_arr(i) = array[i] + obj.get_arr(i);
  }
  return tmp;
}
arr arr::operator-(arr obj)
{
  int min_count = count;
  if(min_count ; obj.get_count()) min_count = obj.get_count();
  arr tmp(min_count);
  for(int i = 0; i  min_count; i++)
  {
    tmp.set_arr(i) = array[i] - obj.get_arr(i);
  }
  return tmp;
}
arr arr::operator*(arr obj)
{
  int min_count = count;
  if(min_count ; obj.get_count()) min_count = obj.get_count();
  arr tmp(min_count);
  for(int i = 0; i  min_count; i++)
  {
    tmp.set_arr(i) = array[i] * obj.get_arr(i);
  }
  return tmp;
}
arr arr::operator/(arr obj)
{
  int min_count = count;
  if(min_count ; obj.get_count()) min_count = obj.get_count();
  arr tmp(min_count);
  for(int i = 0; i  min_count; i++)
  {
    if(obj.get_arr(i)) tmp.set_arr(i) = array[i] / obj.get_arr(i);
  }
  return tmp;
}
 
int main()
{
  arr fst(10), snd(12);
 
  arr thd = fst + snd;
  thd = fst - thd;
 
  for(int i = 0; i  thd.get_count(); i++)
  {
    cout  thd.get_arr(i)  "\n";
  }
 
  thd = fst * snd;
  thd = thd / snd;
 
  for(int i = 0; i  thd.get_count(); i++)
  {
    cout  thd.get_arr(i)  "\n";
  }
 
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru