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

Про конструктор копирования, оператор присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как sizeof считает размер? http://www.cyberforum.ru/cpp-beginners/thread577217.html
Есть код программы. Скажите как определить размерность структуры? Дело в том что выдает 4 байта, но хотелось бы узнать как это делает программа по шагам? то есть откуда в принципе эти 4 байта берутся, которые sizeof выводит? #include <iostream> class ImplClass //áàçîâûé êëàññ { public: void do_work_1() { std::cout << "Doing some work 1" << std::endl;
C++ Задача на формирование массива. Задан массив целых чисел, вектор U: U 15 5 9 12 1 16 10 6 8 25 Сформировать новый массив V, эл-ты к-го вычисляются по формуле: Vk= √((Uk×cos(55°))/(1+|U| )) ; k= 1,2,...,10; где |U| - модуль вектора U: |U|=√(U_1^2 )+(U_2^2)+⋯(U_10^2) Не имею понятия как решать... http://www.cyberforum.ru/cpp-beginners/thread577199.html
C++ Деревья
Вот есть программа, помогите ее переделать, чтобы можно было включать элементы по логическому номеру. помогите пожалуйста. #include <iostream> #include <stdio.h> #include <windows.h> #include <string.h> #include <conio.h> using namespace std; #define N 2
Результаты спортивных соревнований занесены в таблицу... C++
Результаты спортивных соревнований занесены в таблицу : № ФИО Год рождения Группа Сумма баллов Разработать программу, выводящую информацию про места в таком виде : ФИО Группа Занятое место
C++ Циклический сдвиг матрицы http://www.cyberforum.ru/cpp-beginners/thread577150.html
Всем доброго дня. Программа располагает двумерный массив в динамичной памяти и сдвигает его на Т элементов влево. вопрос вот в чем: Как изменить void func(int **arr, int size, int stift) , чтобы сдвигало массив вправо, а не влево? Код: #include <stdio.h> #include <stdlib.h> #include <time.h> //фукнция сдвига //на входе подается указатель на начало массива
C++ Данная матрицы сложения со слов порядка n * n. Помогите решить срочно..Пожалуйста. Данная матрицы сложения со слов порядка n * n. Слова разделяются пробелами. Определить и вывести на экраны слова побочной диагонали. подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
17.05.2012, 00:21  [ТС]     Про конструктор копирования, оператор присваивания
Объясните, пожалуйста, тогда этот пример из википедии
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
class My_Array 
{
 
    int * array;
    int count;
 
public:
 
    My_Array & operator = (const My_Array & other)
    {
        if (this != &other) // защита от неправильного самоприсваивания
        {
            // 1: выделяем "новую" память и копируем элементы
            int * new_array = new int[other.count];
            std::copy(other.array, other.array + other.count, new_array);
 
            // 2: освобождаем "старую" память
            delete [] array;
 
            // 3: присваиваем значения в "новой" памяти объекту
            array = new_array;
            count = other.count;
        }
        // по соглашению всегда возвращаем *this
        return *this;
    }
 
    ...
 
};
Мне никак не понять, зачем на строчке 18 освобождается память под массив. Насколько это безопасно? До вызова оператора = случайно не вызывается конструктор копирования/просто конструктор?
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru