0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 45
|
||||||||||||||||
1 | ||||||||||||||||
Передача по ссылке01.08.2019, 12:45. Показов 4012. Ответов 31
Задание №8 из книги "Объектно-ориентированное программирование в С++", 4-е издание, Роберт Лафоре, 2004г.
В некоторых компьютерных языках, таких, как Visual Basic, есть операции, с помощью которых можно выделить часть строки и присвоить её другой строке. (В стандартном классе string предложены различные подходы.) Используя наследование, добавьте такую возможность в класс Pstring из упражнения 2. В новом производном классе Pstring2 разместите три новых функции: left(), mid() и right().
временный объект класса Pstring2, который затем их возвратит. Для получения лучшего результата используйте в этих функциях возврат по ссылке, чтобы они могли быть использованы с левой стороны знака "равно" для изменения существующей строки. Мой код:
Если делать через временный объект:
временный объект. И эти функции я не могу использовать слева от знака равно "=". Можно еще создать глобальный объект класса Pstring2. Тогда будет работать передача по ссылке, можно использовать слева от знака равно, но глобальный объект != временный объект. Заранее спасибо.
0
|
01.08.2019, 12:45 | |
Ответы с готовыми решениями:
31
Передача по ссылке Передача по ссылке Передача по ссылке Передача массива по ссылке |
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
01.08.2019, 16:03 | 21 | |||||
Сообщение было отмечено НовыйПетрович как решение
Решение
Тогда вот так
1
|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 45
|
|
01.08.2019, 16:17 [ТС] | 22 |
Походу это будет лучший вариант. Мой код нельзя использовать слева от знака равно.
С этим разобрались. Тогда какую другую книгу посоветуете? Имеет ли смысл бросать эту или сделать это задание как вы посоветовали и идти дальше. Все-таки здесь 9 глав закончил. Добавлено через 4 минуты Объясните почему здесь https://en.wikipedia.org/wiki/Most_vexing_parse TimeKeeper time_keeper(Timer()); Вызывается конструктор чужого, никак не связанного класса?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
01.08.2019, 16:22 | 23 |
Это не конструктор вызывается, это создаётся экземпляр класса Timer и передаётся параметром в конструктор TimeKeeper
Чувствую, лучше бросать. Слабовато как-то для 9-ти глав (Хотя, я уже и не помню когда последний раз эти книги читал).
0
|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 45
|
|
01.08.2019, 16:27 [ТС] | 24 |
А есть такие книги, которые вы читали, и можете сказать, что там минимум ошибок?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
01.08.2019, 16:30 | 25 |
Есть, наверное. Сам я читал их 20 лет назад, поэтому мне сложно что-то посоветовать.
Литература C++
0
|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 45
|
|
01.08.2019, 16:36 [ТС] | 26 |
Мне не сложно взять любую другую. Но именно так я выбрал Лафоре. И сейчас вы мне говорите, что автор учит плохому (это слышу не в первый раз, но во второй - повод задуматься). Где гарантия, что следующий случайно выбранный автор в своей книге допустил меньше ошибок, чем Лафоре?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
01.08.2019, 16:40 | 27 |
1
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
01.08.2019, 16:44 | 28 |
НовыйПетрович, советую "Базовый курс" Липпмана. Очень грамотно в плане преподнесения информации, все по полочкам разложено. Сам её сейчас читаю, что бы закрепить и дополнить знания, полученные после прочтения
"Programming: Principles and Practice Using C++" Страуструпа и из др. источников. Вторая довольно сумбурная и местами тяжеловата для новичка, но автор не абы кто(хотя все же не преподаватель), тоже очень полезная. Дальше Мейерса планирую читать.
1
|
Azazel-San
|
01.08.2019, 16:57
#29
|
0
|
zayats80888
|
01.08.2019, 17:05
#30
|
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
01.08.2019, 21:32 | 31 |
Это правильно.
Тем, что вы пишете выражение String(s) не в списке инициализации (не после двоеточия и не до открывающей скобки).В С++ много контекстно-зависимых семантик. Поэтому выражение String(s) может иметь совершенно разный смысл в зависимости от того, где вы его напишете и чем при этом будут являться String и s .Именно так. Текста нет. Потому что нужная инициализация базового класса не была запущена. Можете объявить деструктор и поставить там точку останова. Я также хочу заметить, что в данном случае, из-за most vexing parse объект будет не безымянный, а именованный. String(s); в данном контексте полностью эквивалентно String s; , правда на неправильность происходящего это не влияет.Добавлено через 1 минуту Да, плохая. На форуме есть по крайней мере еще 4 разных темы, где выяснилось, что в книге подается откровенная дезинформация. Добавлено через 1 минуту Здесь есть целая прикрепленная тема. Выберите там, что понравится. Липпман - отличный вариант. Добавлено через 3 часа 33 минуты НовыйПетрович, вообще странно читать от вас удивление по поводу этого, когда вы уже с таким сталкивались: Точка с запятой после структуры, перечисления, класса
1
|
Комп_Оратор)
|
||||||
02.08.2019, 14:21 | 32 | |||||
НовыйПетрович, очень мутно, написано. Я бы (без проверок и пр.) что-то такое наваял:
0
|
02.08.2019, 14:21 | |
02.08.2019, 14:21 | |
Помогаю со студенческими работами здесь
32
Передача объекта по ссылке Передача вектора по ссылке Передача объекта по ссылке Передача параметра по ссылке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации
В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
|
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира
В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
|
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин
История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
|
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией
В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
|
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий
В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
|
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO
/ / https:/ / leetcode. com/ studyplan/ top-interview-150/
package topInterview
. . .
|
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
|
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
|
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
|
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
|
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации.
Исполнитель Чертежник работает на координатной плоскости, где может. . .
|