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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mxs89
11 / 11 / 4
Регистрация: 13.04.2015
Сообщений: 157
Завершенные тесты: 1
#1

При инициализации массива в отладке не попадаю в обработчик, поясните почему? - C++

04.08.2016, 01:43. Просмотров 582. Ответов 24
Метки нет (Все метки)

имеется два класса
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
struct Integer
{
    explicit Integer(int const &value)
        : value_(value)
        {
        }
    Integer()
        :value_(0)
        {
        }
    Integer &operator=(int const &value)
        {
        value_ = value;
        return *this;
        }
private:
    int value_;
};
 
template<class _Ty>
    struct Array
{
    explicit Array(size_t const &size, _Ty const &value)
        : size_(size), elements_(new _Ty[size])
        {
        for (size_t i = 0; i < size; i++)
            *(elements_ + i) = value;
        }
    ~Array()
        {
        if (elements_)
            delete[]elements_;
        elements_ = 0;
        size_ = 0;
        }
private:
    _Ty *elements_;
    size_t size_;
};
при инициализации массива происходит копирование значения по средствам оператора =, в отладке не попадаю в обработчик, поясните почему?

C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    Integer i(15);
 
    auto value = std::make_unique<Array<Integer>>(10, i);
 
    i = 16;
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2016, 01:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При инициализации массива в отладке не попадаю в обработчик, поясните почему? (C++):

Почему прога может зависать при инициализации массива - C++
Проект в VS2010 простое консольное приложение Есть массив string vesa_str; При его инициализации внутри функции прога зависает....

При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации - C++
код: #include &lt;iostream&gt; #include &lt;conio.h&gt; int A,n,m; using namespace std; void poisk1(); void poisk2(); int main() ...

Почему я не попадаю в специализацию шаблона? - C++
Почему я не попадаю в специализацию шаблона? template&lt;&gt; box&amp; max(box&amp;, box&amp;); #include&lt;iostream&gt; struct box { char...

Почему при инициализации данных программа работает быстрей? - C++
Почему при инициализации данных программа работает быстрей?

Почему при инициализации строки, сначала создаётся пустой объект? - C++
Чтобы при создании присвоить строке какое-то значение, можно использовать два способа: string str1(”bla-bla-bla”); или string str2 =...

Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива - C++
Очень нужна ваша помощь! Я уже не знаю что тут можно сделать. Код части программы, где вылазит ошибка ниже. Коротко о проблеме: я...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mxs89
11 / 11 / 4
Регистрация: 13.04.2015
Сообщений: 157
Завершенные тесты: 1
04.08.2016, 13:01  [ТС] #16
Цитата Сообщение от hoggy Посмотреть сообщение
дефолтный оператор= выполняет почленное присвоение
где об этом можно почитать?
0
hoggy
Нарушитель
6564 / 2745 / 474
Регистрация: 15.11.2014
Сообщений: 6,092
Завершенные тесты: 1
04.08.2016, 13:07 #17
Цитата Сообщение от mxs89 Посмотреть сообщение
где об этом можно почитать?
http://www.open-std.org/JTC1/SC22/WG...2013/n3690.pdf
0
gru74ik
Модератор
Эксперт CЭксперт С++
4178 / 1806 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
04.08.2016, 13:19 #18
Цитата Сообщение от hoggy Посмотреть сообщение
http://www.open-std.org/JTC1/SC22/WG...2013/n3690.pdf
Вот поновее: http://www.open-std.org/jtc1/sc22/wg...2013/n3797.pdf
2
Ferrari F1
=^_^=
570 / 457 / 94
Регистрация: 27.01.2015
Сообщений: 2,696
Записей в блоге: 1
Завершенные тесты: 1
04.08.2016, 18:19 #19
mxs89, в книге Липпмана об этом есть, во всей 13 главе об этом идет речь (о кон-рах копирования, перемещения, операторах присваивания, деструкторах, ну и еще о move семантике остаток главы)
1
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
05.08.2016, 00:03 #20
Цитата Сообщение от gru74ik Посмотреть сообщение
Вот поновее
Даешь прогресс: http://open-std.org/JTC1/SC22/WG21/d...2016/n4594.pdf
3
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 332
Завершенные тесты: 1
05.08.2016, 09:41 #21
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
получается правила не генирировать оператор=, если он реализован хоть и для другого типа - нету?
чем-то напоминает вот такую штуку, да?

Добавлено через 20 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
struct A
{
};
 
struct B : public A
{
    B& operator=(const A& obj)
    {
        cout << "got here!\n";
        return *this;
    }
};
 
int main()
{
    B b1, b2;
    b2 = b1;
    return 0;
}
ничего не выводится, прикольно, да?
0
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
05.08.2016, 10:09 #22
Babysitter, нет
0
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 332
Завершенные тесты: 1
05.08.2016, 10:35 #23
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
нет
okay
0
rikimaru2013
05.08.2016, 11:03
  #24

Не по теме:

Babysitter, не расстраивайся - когда я такую же "интересную" фишку написал Интересный "баг" в коде меня тоже умники зафукали, якобы это очевидно - хотя то было нифига не очевидно.

0
Babysitter
05.08.2016, 11:08     При инициализации массива в отладке не попадаю в обработчик, поясните почему?
  #25

Не по теме:

rikimaru2013, да это даже не мой блог, знакомого. ну если уж очевидно, то ладно.
теперь то может быть, но впервые такая вещь проскальзывает незаметно и найти ее непросто.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2016, 11:08
Привет! Вот еще темы с ответами:

Заполнение массива при инициализации - C++
Доброго времени суток. Имеется следующий код: struct ProcessInfo { HANDLE ProcessHandle; DWORD ProcessID; HANDLE...

Ошибка при инициализации массива - C++
В примере есть массив: sf::String TileMap = { &quot; &quot;, &quot; ...

Ошибка при инициализации массива - C++
Что делать? Так как я понимаю, точку с запятой вообще в помине не должно здесь быть!о_О

Заполнение массива при инициализации - C++
int arr; Как массив сразу заполнить нулями?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.08.2016, 11:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru