9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
||||||
1 | ||||||
Динамически выделенная память13.02.2013, 00:49. Показов 934. Ответов 17
Метки нет (Все метки)
Имеем прототип
Polinomials operator+(const Polinomials &) const; И имеем функцию
_BLOCK_TYPE_IS_VALID Почему? По идее просто ничего не должно произойти. Это всё равно что написать строчку 5 + 6;
0
|
13.02.2013, 00:49 | |
Ответы с готовыми решениями:
17
Память, выделенная для строки Резкий выход из проги: куда девается выделенная переменной память? Память распределить динамически Динамически распределяемая память |
Заблокирован
|
||||||
13.02.2013, 01:55 | 2 | |||||
kebal, сам попробуй логически подумать что делает твой оператор +
- что с чем тут скалдывается, м? Стукутры твоего класса не знаю потому лишь наброском могу показать
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
13.02.2013, 06:44 | 3 | |||||
ну так ничё и не происходит
0
|
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
|
13.02.2013, 18:16 [ТС] | 4 |
-=ЮрА=-, сколько не думай логически, а если не знать, что должен быть конструктор копии, то ничего и не придумаешь. Я знаю, что там должны были быть операции сложения, я их просто опустил, так как оно даже не возвращало temp.
Мне ответ уже дали, только в другой теме. Я там просто специально сократил код. Пример бессмысленный, но он не работал, так как я не знал, что нужен конструктор копии, путал с оператором =.
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
13.02.2013, 18:24 | 5 |
0
|
Заблокирован
|
||||||
13.02.2013, 19:38 | 6 | |||||
я не очень тебя понял, ну ок если помгогли норм
Внизу код без конструктора копирования и преобразования, с перегруженными операторатими сложения вычитания и присваивания + как бонус оператор <<
1
|
Заблокирован
|
||||||
13.02.2013, 19:42 | 7 | |||||
Ниже тоже самое но уже с контрукторами копирования и преобразования
1
|
|
13.02.2013, 19:43
#8
|
0
|
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
|
14.02.2013, 00:34 [ТС] | 9 |
То есть когда у нас есть строка
pam1 = pam2 + pam3; и оператор + возвращает экземпляр данного класса, то можно например вместо конструктора копии иметь оператор присваивания, где правым операндом является экземпляр данного класса?
0
|
Заблокирован
|
||||||
14.02.2013, 00:46 | 10 | |||||
kebal, я решил точно сам всё проверить
1
|
Заблокирован
|
||||||
14.02.2013, 00:54 | 11 | |||||
Теперь смотри как ведёт себя код без контрукторов копирования и преобразования
0
|
|
14.02.2013, 01:01
#12
|
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
14.02.2013, 01:56 | 13 |
"вместо" не получится. Коль скоро ты задействуешь "=", то оператор "=" вызовется в любом случае, вне зависимости от того есть у тебя КК или нет; а зависит, это как мы выяснил и от того, возвращает "=" ссылку или объект
То есть схема такая: 1) если "=" возвращает ссылку- вызывается "=" 2) если "=" возвращает объект- вызывается "=" и КК Вот и вся разница. Естессно, я рекомендую первый вариант. Ибо не фиг выпендриваться лишний раз. Кроме того, помним что компилятор может вести себя не так, как написано в книжке или не так, как мы предполагаем Почему не вызывается конструктор копирования? Брайан Оверленд "C++ без страха" старается осветить именно эти вопросы
1
|
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
|
14.02.2013, 16:14 [ТС] | 14 |
Добавлено через 1 минуту
Вы имелли ввиду если + возвращает, да? А потом проверяется, что именно принимает оператор =
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
14.02.2013, 16:41 | 15 |
Да нет же. Ты стал разбираться с КК и "="
0
|
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
|
14.02.2013, 18:07 [ТС] | 16 |
Вот вы говорите, если = возвращает...
Оператор = если использовать по делу вообще возвращает только this, да и то ради того, чтобы обеспечить сцепленное присваивание, поэтому я не понимаю какое это имеет тут отношение
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
14.02.2013, 18:46 | 17 |
Ну да. То есть отвечая на твой вопрос:
я попытался показать тык скыть иерархию "=" и КК, а именно: вызов КК зависит от того, что возвращает "=" Наверное, это было лишнее. Наверное, надо было просто сказать: "нет". Ты уж прости мня старика
1
|
9 / 9 / 2
Регистрация: 02.11.2012
Сообщений: 153
|
|
14.02.2013, 19:13 [ТС] | 18 |
ааа, ну теперь понятно я ведь спрашиваю по незнанию)
0
|
14.02.2013, 19:13 | |
14.02.2013, 19:13 | |
Помогаю со студенческими работами здесь
18
Запись в динамически выделенную память Удалить динамически выделенную память Динамически распределяемая память. Массивы Массивы. Динамически распределяемая память. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |