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

Deep copy and Shadow copy - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при выполнении http://www.cyberforum.ru/cpp-beginners/thread629877.html
Привет всем. Скажите пожалуйста, что мне делать? При выполнении программы выдает ошибку "Инструкция по адресу "0x004013bd" обратилась к памяти по адресу "0х00000002". Память не может быть "written". Использую для создания проги Dev-C++.
C++ Ввод структуры в текстовый файл столбиком и вывод данных из файла в структуру Имеется база данных в виде структуры, которая будет постепенно дописываться приблизительно до 1000 элементов. В каждом элементе структуры 10 составляющих разных размеров и размерности. struct x { char y1; char y2; char y3; char y4; char y5; char y6; char y7; http://www.cyberforum.ru/cpp-beginners/thread629872.html
Overloading [] operators C++
Преект компилируется нормально. По заданию нужно чтобы было реализованно 2 версии оператора одна для чтения другая для записи типа дано что нужно их декларироватьмплемн вот таким образом Point& operator (int index); const Point& operator (int index) const; имплементацию надо сделать самому ПРОБЛЕМА: Я в имплементации добавил чтоб он мне выводим какой оператор вызывается для чтения...
Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой элемент C++
Задание: Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой элемент. Ошибка в функции work: он ищет все отрицательные элементы, а нужно чтобы искал там где есть хоть бы один 0. Как сделать правильно это условие.. #include "stdafx.h" #include "math.h" #include "stdio.h" #include <clocale> const int MAX_N=100; //Максимальные размеры массива const...
C++ Подскажите название книги http://www.cyberforum.ru/cpp-beginners/thread629855.html
Не подскажите название книги по c++: у нёё было два автора, к ней прилагался cd, в начале не объяснялась структура длинной команды (просто говорилось что она делает), и описывалась работа не в visual studio, а в чём-то другом.
C++ Начало программирования Подскажите книжку для начала программирования на c++, а то я не уверен что Стивен Прата подходит для начала. подробнее

Показать сообщение отдельно
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
28.07.2012, 12:58  [ТС]     Deep copy and Shadow copy
По поводу этого проекта есть еще одна магическая для меня вещь которая заставляет меня беспокоится...

C++
1
delete [] m_data;
Вот это страчка :
Получается что я удалаю дату еще не присвоев ее к копии. Но факт в том что все работает
если я эту строчку ставлю в конце то копи конструктор возвращает мне (это можно через getelement увидеть ) дефонлтную точку ((0,0))

Как так получается я удаляю дату раньше чем ее переношу в копию а у меня все работает ?

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
// Это из Array.cpp см выше 
Array& Array::operator = (const Array& source)
        {
            
 
            std::cout << " In the Array Assignment operator\n";
 
            if (this == &source)
                {
                std::cout << "Same Array \n"; 
                return *this;
                }
 
            delete [] m_data;
            std::cout << "Deleted m_data array\n";
 
            m_size = source.m_size;                             // shallow copy - this is not dynamic alloc
 
            if (source.m_data)                                  // if not zeros then there is a ref.
            {
                std::cout <<"im here\n"; 
 
                m_data = new Point[source.m_size];              // create a new pointee.
 
                for (int i = 0; i < source.m_size; i++)
                    m_data[i]    =    source.m_data[i];         //copy the points from/to array
            }
            else
                m_data = 0;  //NULL
 
            return *this;
        }
    //----------- Implementation of GLOBAL(friend) Ostream << Operator  -----------//
std::ostream& operator << (std::ostream& os, const Array& ObjArray)
{
    os << "\nArray Size = " << ObjArray.m_size << std::endl;
 
        for (int i = 0; i < ObjArray.m_size; i++)
            os << "Array [" << i << "]= "<< ObjArray.m_data[i] << "\n";
 
    return os;
}
 
Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru