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

Класс "Массив". Перегрузка стандартных операций - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
25.10.2010, 16:05     Класс "Массив". Перегрузка стандартных операций #1
Дан класс (возможное имя класса Massiv), задающий массив целых чисел. Поля класса: указатель на массив (тип int *), число элементов массива (тип int). Класс включает конструктор без параметров, задающий пустой массив (число элементов равно 0) и конструктор, создающий массив на основе существующего массива (тип int A[]).
Необходимо перегрузить операции и продемонстрировать их работу.
Помогите 2 задачи
1) Перегрузить операцию [] (обращение к элементу массива) и операцию + (сложение). В операции + первый операнд имеет тип указатель на массив целых чисел (int *), а второй тип Massiv, считать, что длины массивов одинаковые. В результате получаем новый объект типа Massiv, длина которого равна длине исходных массивов, а элемент равен сумме соответствующих элементов (имеющих одинаковые индексы).
2) Перегрузить операцию [] (обращение к элементу массива) и операцию + (сложение). В операции + два операнда имеют тип Massiv, в результате получаем новый объект типа Massiv, длина которого равна сумме длин исходных массивов, вначале записываются элементы из первого исходного массива затем из второго.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2010, 16:05     Класс "Массив". Перегрузка стандартных операций
Посмотрите здесь:

C++ Перегрузка стандартных операций
Перегрузка стандартных операций C++
Перегрузка стандартных операций C++
C++ Перегрузка стандартных операций
C++ Класс "Дата", перегрузка операций
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
27.10.2010, 14:16  [ТС]     Класс "Массив". Перегрузка стандартных операций #2
Форумчани!!! Проверьте правильно написанна эта программа???
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
#include <iostream>
 
class Massive
{
  friend Massive operator+(const int *, const Massive &);
public:
  Massive(): size(0), p(0) { }
  Massive(const int *, const int);
  Massive(const Massive&);
  Massive& operator=(const Massive&);
  ~Massive() { delete [] p; }
  int &operator[](const int i) { return p[i]; }
  const int &operator[](const int i) const { return p[i]; }
  void debug() const;
private:
  int size;
  int *p;
};
 
Massive::Massive(const int *a, const int sz): size(sz),p(new int[sz])
{
  for (int i = 0; i != size; ++i)
    p[i] = a[i];
}
 
Massive::Massive(const Massive &rhs):size(rhs.size),p(new int[rhs.size])
{
  for (int i = 0; i != size; ++i)
    p[i] = rhs.p[i];
}
 
Massive& Massive::operator=(const Massive &rhs)
{
  if (this != &rhs)
  {
    delete [] p;
    p = new int[rhs.size];
    size = rhs.size;
    for (int i = 0; i != rhs.size; ++i)
      p[i] = rhs.p[i];
  }
  return *this;
}
 
void Massive::debug() const
{
  std::cout << "size = " << size << std::endl;
  for (int i = 0; i != size; ++i)
    std::cout << p[i] << " ";
  std::cout << std::endl;
}
 
Massive operator+(const int *a, const Massive &rhs)
{
  Massive temp(rhs);
  for (int i = 0; i != rhs.size; ++i)
    temp[i] += a[i];
  return temp;
}
 
int main()
{
  int a1[5] = {1, 3, 5, 2, 1};
  int a2[6] = {3, 41, 2, 23, 2};
  Massive obj1(a1, 5);
  Massive obj2(a2, 6);
  obj1.debug();
  Massive obj3;
  obj3 = a2 + obj1;
  obj3.debug(); 
  obj3[2] = 2;
  obj3[1] = obj1[2];
  obj3.debug();
  return 0;
 
}
NiTan
27.10.2010, 14:39
  #3

Не по теме:

Dimanho, хватит флудить!

Vadya
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 14
27.10.2010, 22:56  [ТС]     Класс "Массив". Перегрузка стандартных операций #4
ну хоть кто нибудь посмотрите плз!!!!!
Yandex
Объявления
27.10.2010, 22:56     Класс "Массив". Перегрузка стандартных операций
Ответ Создать тему
Опции темы

Текущее время: 03:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru