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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ абстрактные классы ошибка http://www.cyberforum.ru/cpp-beginners/thread991902.html
Здравствуйте. Помогите пожалуйста найти ошибку в программе с абстрактным классом. #include "stdafx.h"; int _tmain(int argc, _TCHAR* argv) { return 0; } #include <iostream> #include <cstdlib>...
C++ ПреобразоваТЬ строку символов в массив #include <cstdio> #include <cctype> #include <iostream> #include <cmath> #include "QTime" void stuToArr(char s, int ar, int&size); using namespace std; int main(){ char s; int ar ,... http://www.cyberforum.ru/cpp-beginners/thread991897.html
Описать рекурсивную функцию DigitCount(S) C++
Описать рекурсивную функцию DigitCount(S) целого типа, которая находит количество цифр в строке S, не используя оператор цикла. С по-мощью этой функции найти количество цифр в ...
блок схема C++
постройте блок-схему в коду! #include <iostream> #include <math.h> using namespace std; int factorial(int param) { int fact = 1; for(int i = 2; i <= param; i++) fact =...
C++ в чём ошибка ? и как исправить ? http://www.cyberforum.ru/cpp-beginners/thread991887.html
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { int n, i; char *s; printf("Введите n: "); scanf("%d", &n); s = malloc(n*sizeof(char));
C++ Описать функцию DecToHex(N) строкового типа Описать функцию DecToHex(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в 16-ричной системе счисления. Результирующая строка состоит из символов... подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95

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

29.10.2013, 20:12. Просмотров 387. Ответов 2
Метки (Все метки)

Вот задание
Кликните здесь для просмотра всего текста
b) Создать класс Set – множество целых чисел, используя динамическую память. Определить операторы работы с множествами: "+" – объединение, "*" – пересечение, "-" вычитание, как дружественные функции, а "+=" – включение нового элемента в множество, "==" – сравнения на равенство, и др. как методы класса. Определить операторы "<<" и ">>". Также определить функцию определения принадлежности элемента множеству.

вот мой класс Set
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Set
{
      int *set;//указатель на множество
      int tmp_quentity;//текущая размерность
      public:
      Set(int);
      ~Set();
      int Get_element(int pos);
      int Get_quentity();
      void Set_element(int num,int pos);
      void operator+=(int num);
};

на всякий случай конструктор(делаю я через *** но по другому не пришло в голову как сделать)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
Set::Set(int n):tmp_quentity(n)
{
    set=new int[100]; 
    for(int i=0;i<tmp_quentity;i++)
    set[i]=0;        
}

тоесть я выделяю память сразу на 100 элементов но храню в tmp_quentity сколько из них занято
вот собственно проблема с перегрузкой +=
вот и она
C++
1
2
3
4
5
void Set::operator+=(int num)
{
     tmp_quentity++;
     set[tmp_quentity]=num;
}
то есть если я прибавляю элемент к множетву я увеличиваю размер множества и на "новое" мето ставлю элемент;
но вот незадача я в мэйне пишу S1+=76;
но выводя множество я получаю в конце не 76 а случайный мусор из памяти.почему?
п.с есть варианты более красивой реализации множества? мне самой не нравится то что я выделяю заведомо 100 элементов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru