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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Преимущества указателя? - C++

20.01.2013, 00:22. Просмотров 2525. Ответов 31
Метки нет (Все метки)

Какая разница между?
C++
1
2
3
MyObject * object = new MyObject;
// и
MyObject object;
Какие преимущества дает использование указателя на объект с последующим выделением памяти под него по сравнению с просто объектом. (помимо того что использование указателя может давать утечки памяти)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 00:22     Преимущества указателя?
Посмотрите здесь:

Преимущества знания С++ - C++
привет всем. Подскажите пожалуйста какие преимущества дает знание языка С++.? Изучив С++ что я могу сделать в гоогле не особо разборчего...

Преимущества указателей на void - C++
В чем преимущества указателей на void? Только в том, что не нужно лишний раз писать (type*) при преобразовании? Например вместо ...

объединить преимущества кодов - C++
Задание Написать программу. Пользователь вводит положительное или отрицательное число. Перевести число в 2-ую систему счисления и...

Какие преимущества дают итераторы? - C++
Доброго времени суток! Подскажите пожалуйста, какие преимущества дают итераторы по сравнению с обычным обращением к элементу массива? ...

QUICKsort и MERGEsort недостатки и преимущества - C++
Добрый вечер! Qsort плоха тем, что в худшем случае работает за О(n^2). Mergesort стабильна и работает ВСЕГДА за n*log(n). Расскажите,...

какие преимущества дает интерфейсное программирование? - C++
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с маленькой просьбой. Я никак не могу...

задача найти преимущества использования контенеров vec и set - C++
Пока не нашел особо больших кординальных преимуществ set'a . В учебнике предлагают решить такой пример: Вводим слово-исключение, если...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.01.2013, 03:01     Преимущества указателя? #21
Цитата Сообщение от MrGluck Посмотреть сообщение
Тогда, думаю, все вопросы отпадут.
На оригинальный вопрос:
Цитата Сообщение от MrGluck Посмотреть сообщение
Как то же сделать через ссылки или в стеке?
Был дан ответ выше
Цитата Сообщение от MrGluck Посмотреть сообщение
и размещение объектов в стеке даст действительную выгоду по сравнению с размещением в куче
Это уже совсем другой вопрос действительной - имхо, никакой.
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
20.01.2013, 03:10  [ТС]     Преимущества указателя? #22
Цитата Сообщение от Toshkarik Посмотреть сообщение
MrGluck, плюс очевиден - скорость. Из минусов - уничтожение объекта при выходе из области видимости. В остальном ничем не отличается.
Если объектов немного и они нужны только для вычисления в функции, то лучше использовать стек, если же объектов много, или важно время их существование - тут уж только new.
Несмотря на кажущуюся простоту вопрос оказался, не из простых... Спасибо за споры в которых истина вынашивалась
MrGluck
Модератор
Эксперт CЭксперт С++
7162 / 4328 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
20.01.2013, 03:34     Преимущества указателя? #23
Vourhey, т.е просто
Цитата Сообщение от MrGluck Посмотреть сообщение
vbloodv, при создании указателя на базовый класс можно использовать полиморфизм
Надо заменить на
При использовании полиморфизма необходимо размещать объекты в куче. (необходимо == желательно). Или просто дописать в конце "без лишнего идиотизма". Т.е. как раз то, что и требовалось ТС
Цитата Сообщение от vbloodv Посмотреть сообщение
Какие преимущества дает использование указателя на объект с последующим выделением памяти под него по сравнению с просто объектом.
Но все же пример переделанный через размещение объектов в стеке (объекты разных классов в одной коллекции) был бы не лишним.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.01.2013, 03:40     Преимущества указателя? #24
Если упростить, что m - паблик и есть какой-нибудь виртуальный метод a()
C++
1
2
3
4
5
6
7
    B b;
    C c;
    D d;
    d.m["B"] = &b;
    d.m["C"] = &c;
    d.m["B"]->a();
    d.m["C"]->a();
Цитата Сообщение от MrGluck Посмотреть сообщение
При использовании полиморфизма необходимо размещать объекты в куче
Думаю, что вообще никогда не нужно затрагивать полиморфизм (как языковой механизм) с зависимыми от операционной системы вещами, такими как куча-стек. Они не связаны друг с другом никак.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
20.01.2013, 05:33     Преимущества указателя? #25
Цитата Сообщение от Vourhey Посмотреть сообщение
Думаю, что вообще никогда не нужно затрагивать полиморфизм (как языковой механизм) с зависимыми от операционной системы вещами, такими как куча-стек. Они не связаны друг с другом никак.
ну в теории то оно так (в стандарте c++ слова heap и stack применяются только относительно алгоритмов и контейнеров stl'a), но по жизни то их как называть?
Не dynamic/static storage же как в стандарте (с storage unit'ами)
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
20.01.2013, 14:54  [ТС]     Преимущества указателя? #26
Цитата Сообщение от Vourhey Посмотреть сообщение
Думаю, что вообще никогда не нужно затрагивать полиморфизм (как языковой механизм) с зависимыми от операционной системы вещами, такими как куча-стек. Они не связаны друг с другом никак.
Не совсем понятно что хотел сказать этим автор?
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
20.01.2013, 15:03     Преимущества указателя? #27
Цитата Сообщение от vbloodv Посмотреть сообщение
Не совсем понятно что хотел сказать этим автор?
Стек и куча это понятия относящиеся к операционной системе. Полиморфизм - к языку. И я бы не стал связывать их вместе словами "нужно", "необходимо" и т. д..
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
21.01.2013, 03:53  [ТС]     Преимущества указателя? #28
Цитата Сообщение от MrGluck Посмотреть сообщение
Но все же пример переделанный через размещение объектов в стеке (объекты разных классов в одной коллекции) был бы не лишним.
Пожалуй он был бы очень очень полезен, даже если был полностью абстрактный !
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.01.2013, 10:24     Преимущества указателя? #29
Цитата Сообщение от alex_x_x Посмотреть сообщение
Не dynamic/static storage же как в стандарте (с storage unit'ами)
Да просто не всего dynamic storage != куча. Есть же alloca(), например. Он хоть со своими закидонами, но динамически разместить полиморфный объект на стеке можно. Хотя, конечно, memory pool не особо медленнее стека, но не приводит к переполнению и весёлым эффектам при выходе из функции. Но ведь на стеке размещается именно нечто временное, на один вызов. Так что всё в порядке, кроме, разве что, переполнения буфера, если созданный объект своим хвостом вылазит за пределы стека. Вот только, к сожалению, 1) alloca() об этом молчит, 2) это никак не проверить заранее; поэтому-то и она и considered harmful.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.01.2013, 13:25     Преимущества указателя? #30
~OhMyGodSoLong~, что такое alloca?
memory pool тоже своеобразное решение, она требует значительно больше уразумений, чем просто выделение памяти на куче/в стеке
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
21.01.2013, 13:28     Преимущества указателя? #31
Цитата Сообщение от alex_x_x Посмотреть сообщение
что такое alloca
Не стандартная функция для выделения памяти на стеке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2013, 14:55     Преимущества указателя?
Еще ссылки по теме:

Преимущества и недостатки при реализации стека, очереди и дека через дин. массива - C++
Доброго времени суток! 1) Назовите преимущества и недостатки реализации очереди с помощью динамического массива. 2) Назовите...

Память. Стек или куча - есть ли преимущества одного кода над другим? - C++
Здравствуйте, хотел спросить в чем различия. В чем тут недостатки и преимущества разных способов? Apple apple(); и Apple *apple = new...

В чем преимущества new и delete и могут ли они действительно заменить функции calloc, malloc, free, realloc? - C++
Язык программирования C поддерживает функции динамического управления пямятью: calloc, malloc, free, realloc - которые неподдерживают...

Компиляторы. Какие преимущества между "кнопкой" и консолью? - C++
В наличии два компилятора: от vs и intel с оболочками и консоли. Какие преимущества между "кнопкой" и консолью?

Удаление указателя - C++
Доброго времени суток! Возник вопрос: безопасно ли таким способом удалять указатели? std::vector<MyClass*> vec; //создание ...


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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.01.2013, 14:55     Преимущества указателя? #32
Цитата Сообщение от Toshkarik Посмотреть сообщение
Не стандартная функция для выделения памяти на стеке.
хм, не видел, какая-та специфика
Yandex
Объявления
21.01.2013, 14:55     Преимущества указателя?
Ответ Создать тему
Опции темы

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