Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
-7 / 2 / 1
Регистрация: 10.04.2016
Сообщений: 53

Используются ли на практике указатели на указатели объектов?

09.07.2016, 08:24. Показов 3744. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеются ввиду указатели именно на объекты, а не динамические массивы.
Например такой: Object** obj;
А как насчёт такого: Object*** obj;

Если такие приёмы используются, приведите пример, где это целесообразно.
Какие аналоги применяются в таких языках как C#?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2016, 08:24
Ответы с готовыми решениями:

Как на практике используются указатели на члены класса
Вопрос №3. А как на практике используются указатели на члены класса? Они в реальном коде вообще используется? Приведите пример когда они...

Указатели от теории к практике
Здравствуйте! Вопрос у меня вот в чем. Как то не приходилось работать с указателями. Почитав материал вроде все понятно. Получить...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

67
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 16:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
В виде проверки указателя на ноль?
Там была речь о выделении памяти. Но проверка на nullptr - тоже нехорошо.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Но вопрос ведь о сходстве и различиях технологий в языках с GC и без в данном контексте.
Насколько я понял, фраза о том, что ссылки - это мол "нехорошо", была в общем контексте.

Цитата Сообщение от vxg Посмотреть сообщение
я лишь объяснил как принято в лучших домах Европы)
В каких например? Просто интересно, чьи кодинг стайлы приветствуют такой подход.
0
10.07.2016, 17:06

Не по теме:

Цитата Сообщение от ct0r Посмотреть сообщение
чьи кодинг стайлы приветствуют такой подход
Наверно под "домами Европы" подразумевались колонии Британии в Индии (j/k) :D

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.07.2016, 20:28
Цитата Сообщение от ct0r Посмотреть сообщение
Там была речь о выделении памяти.
Где?
Цитата Сообщение от ct0r Посмотреть сообщение
фраза о том, что ссылки - это мол "нехорошо", была в общем контексте.
Так не могло быть. Потому что
Цитата Сообщение от ct0r Посмотреть сообщение
что ссылки - это мол "нехорошо",
эквивалентно:
"Java/C# - это нехорошо"
Потому как без ссылок они не бывают.
Нет, фраза была о C++ и я с нею не могу согласиться, что и пытался выразить, как мог.
Про лучшие дома ЛондОна и Парижу я тоже не могу поверить.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
10.07.2016, 20:32
ct0r, mporro, IGPIGP, Ален И Голуб Правила программирования C & C++ глава 8в п. 121 Никогда не используйте ссылки в качестве результатов, пользуйтесь указателями. Если ваша собственная логика и мои сжатые комментарии не в силах убедить вас в полезности этого правила можете открыть указанный пункт "книги хороших манер" и прочитать развёрнутое обоснование. Если указанный автор и его труд вами не признается за "канон" священные войны устраивать не будем - все люди разные, но подобное ещё сильнее покажет мне НАСКОЛЬКО они могут быть разными даже в очевидных вопросах)
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.07.2016, 20:58
vxg, я не могу с этим спорить. Именно на моменте где мысли каждого дело рук скакунов каждого я и согласился.
Цитата Сообщение от vxg Посмотреть сообщение
священные войны устраивать не будем
Я за! Я же не говорил, что ты неправ. Напротив, в твоих доводах есть логика. Я сказал лишь, что не согласен с ними.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 21:36
Цитата Сообщение от IGPIGP Посмотреть сообщение
Где?
Ну это относилось к случаю, когда сама функция может что-то вернуть, а может и не вернуть. Это не про случай передачи указателя или ссылки как выходного параметра.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нет, фраза была о C++ и я с нею не могу согласиться, что и пытался выразить, как мог.
Ну естественно для меня это был контекст С++, а не Вселенной

vxg, так книжка-то 1) для начинающих 2) отражает в основном личную позицию автора 3) устарела.
Прочтем первую пару страниц из этой части 8в:
1) Пункты про причины использования сейчас явно неполны.
2) Передача double как const double& - сейчас наоборот лучше передавать по значению.
3) Для передачи пользовательских классов - слишком примитивное правило. Ничего не сказано про объекты меньше размера указателя и про тот случай, когда внутри все равно нужно копирование. Не говоря уже о rvalue ref.
4) Главный аргумент, что нам ппц как сложно взглянуть на сигнатуру функции, в наше время смешон.
5) Проблема copy_word скорее не в ссылке, а вообще в том, как она спроектирована, - лучше указатель не трогать, а возвращать нужный результат (указатель на подстроку или кол-во пройденных символов). Это и понятнее, и безопаснее, и позволяет вызывать с src типа const char*. Можно еще глянуть на strtok.
6) delete для массива там какой-то странный

Дальше не читал
1
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
10.07.2016, 22:03
ct0r, ваши 123 - не более чем спекуляция - писателя каждый может обидеть - достаточно лишь посмеяться над аудиторией, пройтись по личности и приплести год выпуска и все - тут уж нечем крыть, дело в шляпе) в начале напишите что-нибудь такое же и добро пожаловать туда откуда вы сейчас нам в режиме оракула истину открываете
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
10.07.2016, 22:11
Цитата Сообщение от vxg Посмотреть сообщение
в начале напишите что-нибудь такое же
Вот, почему если Джамшуты криво плитку положили - никто не говорит: "Сперва положи 100500 квадратных метров плитки, потом критикуй"? А как только речь заходит о музыке, книгах и т.д. - сразу возникает аргумент "Сперва добейся"™?
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
10.07.2016, 22:24
avgoor, я согласен с тем что оценить красоту картины может человек который не является художником но и вы поймите что когда приходит человек "рисующий" спичками на потолке лифта и говорит "Айвазовский это отстой" - это как то неправильно выглядит...
ct0r, в качестве ответа готов принять ссылку на труд современного объективного автора-профессионала который призывал бы к противоположному - всегда используйте ссылки в качестве результатов, не пользуйтесь указателями
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
10.07.2016, 22:38
vxg, Если
Цитата Сообщение от vxg Посмотреть сообщение
Никогда не используйте ссылки в качестве результатов, пользуйтесь указателями.
Как перегружать operator=, например? Т.е. правило по меньшей мере спорное. Где-то логичнее возвращать указатель (чаще там, где возвращается массив), где-то ссылку на константу (как Майерс рекомендует, и для меня он более Айвазовский)
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
10.07.2016, 22:40
avgoor, почитайте выше - я не имею ничего против использования ссылки в специфических случаях в частности при перегрузке операторов - ура! мы с вами в одном окопе
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 23:14
Цитата Сообщение от vxg Посмотреть сообщение
ваши 123 - не более чем спекуляция - писателя каждый может обидеть - достаточно лишь посмеяться над аудиторией, пройтись по личности и приплести год выпуска и все - тут уж нечем крыть, дело в шляпе
Ого, какая бурная фантазия. Достаточно пофантазировать, а не ответить конструктивно на каждый из 6 моих пунктов?

Цитата Сообщение от vxg Посмотреть сообщение
в начале напишите что-нибудь такое же
Мне не интересно такое писать, тем более очевидные вещи.

Цитата Сообщение от vxg Посмотреть сообщение
в качестве ответа готов принять ссылку на труд современного объективного автора-профессионала который призывал бы к противоположному - всегда используйте ссылки в качестве результатов, не пользуйтесь указателями
Мы меряемся авторитетами (хотя я и хз кто такой Голуб, ну допустим типа "авторитет") или аргументами? Ну окей, пусть авторитетами.
Современный гайд по С++ от Страуструпа и Саттера - https://github.com/isocpp/CppC... delines.md
Пункт F.17: For "in-out" parameters, pass by reference to non-const - достаточно понятно?
Идем дальше: F.20: For "out" output values, prefer return values to output parameters - про copy_word тоже теперь понятнее?
F.21: To return multiple "out" values, prefer returning a tuple or struct - ну если вдруг будет вопрос - а как же вернуть несколько значений?
За указатели есть только случай F.60: Prefer T* over T& when "no argument" is a valid option. И все.

Короче, мне непонятны ваши душевные терзания по поводу того, что я макулатуру назвал макулатурой
4
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.07.2016, 23:20
Цитата Сообщение от ct0r Посмотреть сообщение
Ну это относилось к случаю, когда сама функция может что-то вернуть, а может и не вернуть.
Не понимаю. Такого даже в С# функция не может. В С++ и подавно. В C# есть типы nullable. У такого типа есть нулевое значение, не в смысле арифметического нуля ( очень мало чего-то ), а в смысле "такого не может быть". В C/C++ есть возможность использовать такой подход пожалуй только для *char используя терминатор: '\0'. Но в остальном такая возможность есть при использовании доступа по указателю, поскольку у него-то (не только у с-строк ) есть значение: nothing. Есть подозрение, что реализация аналогов "nullable" частенько связана с указателями. Потому что подобные языки пишутся на C++ каких-то ещё языках.
А выделение и варианты new (с throw и без) тут в теме, но не обязательно. Представим метод класса выбирающий адрес на принадлежащие объекту объекты-члены (или статические - неважно) и возможна ситуация когда никого из существующих объектов вернуть нельзя.
1
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 23:24
IGPIGP, не верите в nullable в С++? А вы читали ссылку, которую я уже давал? Прочитайте. И посмотрите пример. Там все написано.
Вот еще раз: http://en.cppreference.com/w/cpp/utility/optional
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
10.07.2016, 23:29
Внесу свою лепту в тему.
Это цитата из High Integrity C++ Coding Standard Version 4.0
8.1.1 Do not use multiple levels of pointer indirection
In C++, at most one level of pointer indirection combined with references is sufficient to express any algorithm or
API.
Instead of using multidimensional arrays, an array of containers or nested containers should be used. Code reliant on more than one level of pointer indirection will be less readable and more difficult to maintain

C++
1
2
3
4
void foo ( int32_t const * const * const pp ); // Non-Compliant
void foo ( int32_t const * const & rp ); // Compliant
void foo ( int32_t const (& ra ) [10]); // Compliant
void foo ( std :: vector < int32_t > const & rv ); // Compliant
3
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 23:32
А, вот еще забыл: F.42: Return a T* to indicate a position (only) Онли!
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
10.07.2016, 23:36
Цитата Сообщение от ct0r Посмотреть сообщение
IGPIGP, не верите в nullable в С++?
Это С++17 и не будет работать с большинством старых компиляторов. Тут дело не в том во что я верю. Я верю что std::optional в реализации может быть исполнено, именно через указатели. Поскольку у встроенных типов таких "нулей" нет.

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
Онли
Та не... не он. Точно!
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
10.07.2016, 23:58
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это С++17 и не будет работать с большинством старых компиляторов.
Вин10 тоже не будет работать на старых компах. Что это доказывает? Ничего.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Я верю что std::optional в реализации может быть исполнено, именно через указатели.
А я не верю, потому что я вижу собственными глазами исходный код STL-библиотек libc++ (clang) и stdlibc++ (gcc). Это - просто обертка над union.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
11.07.2016, 00:00
Цитата Сообщение от ct0r Посмотреть сообщение
Это - просто обертка над union.
Причем стандартизированная -> нет UB,
в отличии от своих подобных поделок.
Емнип, даже у Александресску не получилось
сделать 100% переносимую обертку над Union,
поправьте, если я что-то путаю.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
11.07.2016, 00:03
Цитата Сообщение от Croessmah Посмотреть сообщение
Емнип, даже у Александресску не получилось
сделать 100% переносимую обертку над Union,
поправьте, если я что-то путаю.
Он делал АТД (discriminated unions) - сейчас это в новом стандарте будет std::variant.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2016, 00:03

В matlab есть указатели на переменные или что-нибудь похожее на указатели?
Здравствуйте, в matlab есть указатели на переменные? или что-нибудь похожее на указатели? нужно хранить в объекте информацию: на...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++,...

Используя нетипизированные указатели и указатели на подпрограммы обобщить сортировку пузырьком
Смысл задания в том, что нужно отсортировать массив структур из 3х полей по сумме координат есть структура struct XYZ{ ...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru