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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.92
gore-lykovoe
32 / 32 / 1
Регистрация: 04.04.2010
Сообщений: 414
#1

Посоветуйте новичку в С++ - C++

31.07.2011, 17:04. Просмотров 7375. Ответов 126
Метки нет (Все метки)

Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться.
Скачал книгу Либерти (21 день).
Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными.
Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор.
Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь?
Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2011, 17:04     Посоветуйте новичку в С++
Посмотрите здесь:

Поясните новичку C++
C++ Посоветуйте новичку порядок действий
C++ Поясните новичку!
C++ посоветуйте новичку в С++
Ответьте новичку C++
Литература Новичку C++
C++ Подскажите новичку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
06.08.2011, 16:26     Посоветуйте новичку в С++ #121
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Именно! Для объекта, созданного операцией new() деструктор вызовется только при выполнении delete(). При раскрутке стека для таких объектов деструктор не вызывается.
Это же очевидно, речь про статически созданные объекты. В этом плане разницы никакой между goto и exceptions нет.
alex_x_x
бжни
2443 / 1648 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
06.08.2011, 16:40     Посоветуйте новичку в С++ #122
с динамическими - умные указатели, и будет все освобождаться

Добавлено через 2 минуты
они же безопасны к исключениям и всему прочему
LosAngeles
Заблокирован
06.08.2011, 18:54     Посоветуйте новичку в С++ #123
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это, разумеется, не так. По-крайней мере для компилятора, соответствующего стандарту. Оператор goto так же выполняет "раскрутку стека" как и throw или break, это полноценный оператор C++. Деструкторы не вызываются только при выходе из программы функциями exit() или abort().
Но это всё-равно не значит, что стоит применять goto где попало.
да действительно так и есть. Я ошибся. Я думал goto просто на безусловный переход заменяется, однако перед ними компилятор ещё и для всех автоматических объектов вызовы деструкторов навставлял. Неожидал
Domenick
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
08.08.2011, 08:22     Посоветуйте новичку в С++ #124
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Сыроежка, если ты собираешься реализовать контейнер вроде вектора, то указатели тебе нужны. А если ты собираешься использовать контейнер вроде вектора, то указатели тебе нафиг не нужны.
я незнаю какой сложности вы программы пишите, но например, у нас был такой предмет "дискретная оптимизация" где нужно было реализовывать алгоритмы Флойда, Задачу коммивояжёра и т д т е задачи из дискретной математики, и как не странно, используя уже существующие контейнеры, были непонятные ошибки, хоть с виду код был очень простой и без ошибок, т е данные контейнеры косячили сами, с определенными параметрами, так вот чтобы избежать этого приходилось самим их описывать, а без знания как все это работает, вы бы и не догадались в чем ошибка, и сидели бы и дальше вдупляли в простейший код стуча головой ап стенку "где же тут может быть ошибка!?"
если вы хотите быть "хорошим" программистом, вам надо знать как все работает, а если хотите программировать на уровне пользователя, то пользуйтесь стандартными контейнерами. Я не говорю, что ими ненадо пользоваться, конечно надо, но порой лучше без них)
разумеется такая ерунда типа вектора врятли будет косячить.
ValeryLaptev
Эксперт С++
1030 / 809 / 48
Регистрация: 30.04.2011
Сообщений: 1,651
08.08.2011, 12:16     Посоветуйте новичку в С++ #125
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Domenick Посмотреть сообщение
я незнаю какой сложности вы программы пишите, но например, у нас был такой предмет "дискретная оптимизация" где нужно было реализовывать алгоритмы Флойда, Задачу коммивояжёра и т д т е задачи из дискретной математики, и как не странно, используя уже существующие контейнеры, были непонятные ошибки, хоть с виду код был очень простой и без ошибок, т е данные контейнеры косячили сами, с определенными параметрами, так вот чтобы избежать этого приходилось самим их описывать, а без знания как все это работает, вы бы и не догадались в чем ошибка, и сидели бы и дальше вдупляли в простейший код стуча головой ап стенку "где же тут может быть ошибка!?"
если вы хотите быть "хорошим" программистом, вам надо знать как все работает, а если хотите программировать на уровне пользователя, то пользуйтесь стандартными контейнерами. Я не говорю, что ими ненадо пользоваться, конечно надо, но порой лучше без них)
разумеется такая ерунда типа вектора врятли будет косячить.
Это не контейнеры косячили, а конкретно ВЫ косячили...
Понимать работу контейнеров программист-профи ОБЯЗАН - это часть его профессиональных знаний и умений. Писать собственный велосипед - это как раз удел новичков, которые еще не стали серьезными профи.
Я вот сейчас с матрицами 20000*20000 работаю и всякими дополнительными к ним контейнерами, вроде вектора списков. Приходится списки сливать-разливать... Да я б застрелился бы, если б мне пришлось самому все это реализовать!
Domenick
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
08.08.2011, 14:34     Посоветуйте новичку в С++ #126
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Это не контейнеры косячили, а конкретно ВЫ косячили...
бываеют такие ситуации, когда немного не понимая как работает какойто метод, можно ошибится применив его, для немного другой задачи.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 14:52     Посоветуйте новичку в С++
Еще ссылки по теме:

C++ посоветуйте литературу, новичку
Подскажите новичку C++
C++ C++ новичку
Советы новичку C++

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

Или воспользуйтесь поиском по форуму:
ValeryLaptev
Эксперт С++
1030 / 809 / 48
Регистрация: 30.04.2011
Сообщений: 1,651
08.08.2011, 14:52     Посоветуйте новичку в С++ #127
Цитата Сообщение от Domenick Посмотреть сообщение
бываеют такие ситуации, когда немного не понимая как работает какойто метод, можно ошибится применив его, для немного другой задачи.
Вот именно! Это просто означает, что "тщательнЕе надо", как говорил Жванецкий...
Yandex
Объявления
08.08.2011, 14:52     Посоветуйте новичку в С++
Ответ Создать тему
Опции темы

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