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

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

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

C++ Посоветуйте новичку порядок действий
C++ посоветуйте новичку в С++
Подскажите новичку. C++
Ответьте новичку C++
C++ Подскажите новичку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 21:22     Посоветуйте новичку в С++ #81
Цитата Сообщение от fasked Посмотреть сообщение
asics, исключения для выхода из циклов - это еще хуже, чем goto
Это шутка ?

Добавлено через 5 минут
Да и это просто пример, как выйти из глубоко вложеного цикла без булевых флагов, а именно средствами С++.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 21:25     Посоветуйте новичку в С++ #82
Интересно, вот gore-lykovoe, открывший эту тему, читает все сообщения и о чем же он думает Какое впечатление о С++ будет
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
05.08.2011, 21:27     Посоветуйте новичку в С++ #83
Вот с хабра крик души:
Привет Хабр,
Меня вводит в ступор С++. Вот просто, зависаю над монитором, смотрю в окно, попиваю чай… И начинаю жалеть за бесценно проведенные годы за изучением стандарта С++, попытками написать свой фронт-энд компилер. Эти мудреные книжки С++ In Depth. Как же я негодовал, когда не понимал кода из книги Александреску. Как записывал все постулаты Страуструпа и иже с ними. Зачем? Вот спрашиваю себя, зачем я теперь все это знаю. Более, я хочу сказать, что этот язык нещаден для гуру, не с медицинской, не с экономической точки зрения! Он не оправдывает усилий, вложенных в его изучение — раз. На практике, он экономически не выгоден — два. И нервные клетки подтвердят, что сопровождать чужой плюснутый код — бывает опасно для здоровья -три.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.08.2011, 21:29     Посоветуйте новичку в С++ #84
Цитата Сообщение от Olga_ Посмотреть сообщение
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
а почему? я знаю что есть std::function, но все же интерено

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Вот с хабра крик души:
не согласен со многим в этой статье, автору надо на С#/Java быдлокодить
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 21:44     Посоветуйте новичку в С++ #85
Цитата Сообщение от Maxwe11 Посмотреть сообщение
а почему? я знаю что есть std::function, но все же интерено
Не моя это установка, я сама иногда указатели на функции использую (честно говоря), код получается интереснее, но вот так, что я могу сказать...
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2011, 21:57     Посоветуйте новичку в С++ #86
Цитата Сообщение от asics Посмотреть сообщение
Это шутка ?
Я абсолютно серьезно. Исключения, как ни странно, предназначены для исключительных ситуаций. Выход из цикла ситуация вполне штатная. Ничего в этом катастрофического нет. А любой программист при виде брошенного исключения скорее всего подумает об ошибке.
Цитата Сообщение от asics Посмотреть сообщение
Да и это просто пример, как выйти из глубоко вложеного цикла без булевых флагов, а именно средствами С++.
а goto это тоже средства C++.
Цитата Сообщение от Maxwe11 Посмотреть сообщение
не согласен со многим в этой статье, автору надо на С#/Java быдлокодить
Поддерживаю. Да и вообще многое, о чем написано в этой статье, мало относится к C++. Скорее к ООП в целом.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 21:59     Посоветуйте новичку в С++ #87
Цитата Сообщение от fasked Посмотреть сообщение
goto это тоже средства C++.
Я имел ввиду вменяемыми средствами, очевидно же.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.08.2011, 22:00     Посоветуйте новичку в С++ #88
Цитата Сообщение от Olga_ Посмотреть сообщение
Не знала, что на С#/Java быдлокодят, спасибо, бросаю Java
сейчас в эти языки лезут все кто неосвоил указатели в С++, эти люди тупо используют фреймворк при чем не самым лучшим образом из-за не знания внутренней "кухни"
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2011, 22:03     Посоветуйте новичку в С++ #89
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от asics Посмотреть сообщение
Я имел ввиду вменяемыми средствами.
Так вот я и говорю о том, что использовать исключения для таких целей это невменяемо.
Можно еще добавить, что Линус Торвальдс (хоть он и сишник) пишет: "... if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program." То есть, такое количество циклов говорит разве что о плохом дизайне проекта. Если же это какой-то супер-мега-алгоритм, то ... тут надо подумать, но точно не исключения

Не по теме:

Цитата Сообщение от Maxwe11 Посмотреть сообщение
сейчас в эти языки лезут все кто неосвоил указатели в С++
F***g pointers, Java is better because it has no pointers!

asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 22:10     Посоветуйте новичку в С++ #90
Цитата Сообщение от fasked Посмотреть сообщение
Исключения, как ни странно, предназначены для исключительных ситуаций. Выход из цикла ситуация вполне штатная. Ничего в этом катастрофического нет. А любой программист при виде брошенного исключения скорее всего подумает об ошибке.
Хотите использовать goto - используйте, кто-то разве запрещает ?

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
Так вот я и говорю о том, что использовать исключения для таких целей это невменяемо.
Вы это скажите
Цитата Сообщение от niXman Посмотреть сообщение
то ли у Саттера, то ли у Александреску.
, я-то тут причем ?

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

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
То есть, такое количество циклов говорит разве что о плохом дизайне проекта.
Разве кто-то утверждал иное ?
ForEveR
05.08.2011, 22:14
  #91

Не по теме:

Эхх. А в питоне исключения не только для того, чтобы сообщить об ошибке. На правах рекламы

fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2011, 22:15     Посоветуйте новичку в С++ #92
Цитата Сообщение от asics Посмотреть сообщение
Разве кто-то утверждал иное ?
Зло порождает только зло, о чем и речь, так что не в goto дело и не в исключениях, просто каждый инструмент надо применять по назначению, а не в качестве костылей.
То есть топором надо дрова рубить, а не гвозди заколачивать или бриться. Это конечно тоже можно, но страшно опасно.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 22:18     Посоветуйте новичку в С++ #93
Цитата Сообщение от fasked Посмотреть сообщение
просто каждый инструмент надо применять по назначению.
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.08.2011, 22:19     Посоветуйте новичку в С++ #94
asics, Не использовать таких циклов) Очевидно же)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 22:21     Посоветуйте новичку в С++ #95
ForEveR, Жизнь не предсказуема, так все же...
Цитата Сообщение от asics Посмотреть сообщение
Какой для этого случая инструмент вменяемый ?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.08.2011, 22:22     Посоветуйте новичку в С++ #96
asics, Большой цикл всегда имеется возможность разбить на функции. Конечно, мы плодим лишние сущности, но этот способ более менее вменяемый.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 22:24     Посоветуйте новичку в С++ #97
ForEveR, Та ладно, нет ответа - значит нет, я же только спросил...
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
05.08.2011, 22:26     Посоветуйте новичку в С++ #98
Цитата Сообщение от asics Посмотреть сообщение
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
не совсем вменяемый (может даже очень не вменяемый) но ничего перечисленного нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int i,j,k;
for(i=0;i<10;i++)
{
  for(j=0;j<10;j++)
   {
     for (k=0;k<10;k++)
      {
         if(lalala[i][j][k]==75)// чего-то ищем
            break; 
       }
      if(k!=10)
         break;
     }
   if(j!=10)
      break;
}
if(i!=10)
  // нашли
 else
  // не нашли
пользоваться не рекомендуется
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2011, 22:33     Посоветуйте новичку в С++ #99
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются. Выход из ситуации ну очень прост - добавить дополнительную сущность:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int* search(...) {
   for (i = 0; i < 10; ++i) {
      for (j = 0; j < 10; ++j) {
         for (k = 0; k < 10; ++k) {
            if (arr[i][j][k] == 75)
               return &arr[i][j][k];
         }
      }
   }
   
   return NULL;
}
 
int foo() {
   int *ptr = NULL;
   if (ptr = search(...)) != NULL) {
      // нашли
   }
   else {
      // не нашли
   }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 22:42     Посоветуйте новичку в С++
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
05.08.2011, 22:42     Посоветуйте новичку в С++ #100
Цитата Сообщение от fasked Посмотреть сообщение
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются.
Не спорю
я же сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
пользоваться не рекомендуется
просто мысли вслух
Yandex
Объявления
05.08.2011, 22:42     Посоветуйте новичку в С++
Ответ Создать тему
Опции темы

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