Конструктор копии для классов

227
14 октября 2017, 19:41

Пытаюсь присвоить значения вектора v1 k v2 но компилятор дает ошибку. Где ошибка? И ещё один вопрос, как перезагружать оператор присваивания ???

Process returned -1073741819 (0xC0000005)   execution time : 1.253 s
Press any key to continue.

Вот код

 #include <iostream>
    using namespace std;
    class vector_c
    {
    private:
        int* vector1;
        int Max;
        int index;
        public:
       vector_c(int sizze)
        {
            index=0;
            Max=sizze;
            vector1 = new int[Max];
        };
        vector_c(vector_c &c)//copy construck
{
    index=c.index;
    Max = c.Max;
    vector1 = new int[Max];
    for (int i = 1; i <=Max; i++)
    {
        vector1[i] = c.vector1[i];
    }
};
        ~vector_c()
    {
        delete [] vector1;
    };
        void max_znachenie()
        {
            int index1=0;
            index1 = vector1[1];
            for(int i=1; i<=Max;i++)
            {
                if(vector1[i] > index1 )    index1 = vector1[i];
            }
            cout << index1 << endl;
        };
        void get_inf(int element)
        {
        vector1[++index]=element;
        };
    int out_inf()
    {
        return vector1[index--];
    };
    };


    int main()
    {
        vector_c v1(3);
        v1.get_inf(78);
        v1.get_inf(2);
        v1.get_inf(5);
        v1.max_znachenie();
        cout << endl;
        cout << endl << v1.out_inf() << endl << v1.out_inf() << endl << v1.out_inf() << endl;
        vector_c v2=v1;
          cout << v2.out_inf();
        return 0;
    }
Answer 1

Прогнала ваш код в дебаггере. Есть 2 проблемы. В конструкторе копирования копируются не все поля. Надо добавить.

 index=c.index;

Функция переписана.

void get_inf(int element)
{
vector1[index++]=element;
};

Пример перегрузки оператора присваивания

    class vector_c
    {
    private:
        int* vector1;
        int Max;
        int index;
    public:
        vector_c(int sizze)
            {
                index=0;
                Max=sizze;
                vector1 = new int[Max];
            };
        vector_c& operator=(const vector_c& right) {
            //проверка на самоприсваивание
            if (this == &right) {
                return *this;
            }
            // Здесь скопируйте все значения
            return *this;
        }
    };
READ ALSO
Не подставляется переменная в jquery скрипт в window.open

Не подставляется переменная в jquery скрипт в window.open

Здравствуйте, имеется кусок следующей jquery функции:

217
Некорректно работает page-scroll-to-id

Некорректно работает page-scroll-to-id

Использую плагин page-scroll-to-id для перемещения по странице при помощи якорейИ необходимо использовать для каждой ссылки свою инициализацию...

345
JSON.parse unexpected non-whitespace

JSON.parse unexpected non-whitespace

Добрый день, есть JSON строка при парсе которой получаю ошибку SyntaxError: JSONparse: unexpected non-whitespace character after JSON Я так понимаю ошибка в том, что в строке...

229
css не хочет обновляться дизайн

css не хочет обновляться дизайн

После замены изображения фона, и замены адреса на изображение с backgblockJPG на backgblock

194