2 / 2 / 0
Регистрация: 15.05.2019
Сообщений: 110
|
||||||||||||||||
1 | ||||||||||||||||
Классы и перегрузка операций28.08.2019, 11:40. Показов 1323. Ответов 20
Метки нет (Все метки)
Добрый день.
Изучаю в данный момент классы и перегрузку операций. Столкнулся с парой непонятных вещей, подскажите пожалуйста. 1)У Дейтлов в книге есть пример ими созданного класса Array, для работы с массивами целочисленных значений. Там есть перегруженная элемент-функция(метод) присваивания одного объекта класса другому(например integer1=integer2):
"Если бы проверка на самоприсваивание не производилась, то при самоприсваивании функция operator= перед своим завершением удаляла бы динамическую память, ассоциированную с объектом." В результате ptr указывал бы на память, которая была удалена." Но ведь при самоприсваивании, в вышеуказанной функции нигде не выделяется дин. память. Она же вроде выделяется, только если объекты разного размера, а в случае самоприсваивания размер одинаковый. Какая по их словам память удаляется при самоприсваивании, в данной функции(если бы не было проверки на самоприсваивание конечно)? 2)И второй вопрос: Есть у меня в классе Str(мною сделанном) функция присваивания одного объекта Str другому:
Если я использую вышеуказанную функцию, как написано, всё нормально присваивается. Но если я пытаюсь сделать возврат из функции не по ссылке а по значению, в string2 хранится мусор. Помогает только использование Конструктора копирования.
string2 лежит мусор? Ведь все действия по записи в него string1 были произведены в функции. Как на него возврат данных влияет?
0
|
28.08.2019, 11:40 | |
Ответы с готовыми решениями:
20
Классы. Перегрузка операций. С++ Классы перегрузка операций Перегрузка операций << и >> Перегрузка операций |
"C with Classes"
|
|
29.08.2019, 16:38 | 21 |
наверно у тебя там тип возвращаемого объекта есть, а ретурна нет, вот он и выводит класс, но по стандарту если нет ретурна это UB.
Добавлено через 2 минуты ретурна может не быть при имеющимся типе отличного от void только у main.
0
|
29.08.2019, 16:38 | |
29.08.2019, 16:38 | |
Помогаю со студенческими работами здесь
21
Перегрузка операций Перегрузка операций << и >> Перегрузка операций Перегрузка операций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |