Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

посоветуйте новичку в С++ - C++
Здравствуйте! Я изучаю С++. С начала я скачала книгу Либерти, но было очень трудно. Сейчас я изучаю из книги "Шилдт Г. С++ Базовый курс,...

посоветуйте литературу, новичку - C++
:help: знаю, конечно, что в разделе "важно" (но всё-таки один раз живём :beach:) эта тема уже обсуждена, но всё-таки можете посоветовать...

Посоветуйте новичку порядок действий - C++
Посоветуйте новичку, в двух словах, порядок действий и название команд. Требуется, на Visual C, написать прогу, которая бы заходила на...

C++ новичку - C++
Доброго времени суток! У меня такой вопрос. Раньше никогда не программировал, а сейчас стало очень интересно. Могу ли я как полный ноль в...

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

подскажите новичку - C++
основы и синтаксис с++ знаю хотелось бы изучить QT но незнаю как подойти к решению вопроса подскажите книги какие-то голова кругом

126
ForEveR
05.08.2011, 22:14     Посоветуйте новичку в С++
  #91

Не по теме:

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

0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.08.2011, 22:15 #92
Цитата Сообщение от asics Посмотреть сообщение
Разве кто-то утверждал иное ?
Зло порождает только зло, о чем и речь, так что не в goto дело и не в исключениях, просто каждый инструмент надо применять по назначению, а не в качестве костылей.
То есть топором надо дрова рубить, а не гвозди заколачивать или бриться. Это конечно тоже можно, но страшно опасно.
1
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:18 #93
Цитата Сообщение от fasked Посмотреть сообщение
просто каждый инструмент надо применять по назначению.
Ок. Какой для этого случая инструмент вменяемый ? goto, исключения, флаги(bool) отпадают.
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.08.2011, 22:19 #94
asics, Не использовать таких циклов) Очевидно же)
2
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:21 #95
ForEveR, Жизнь не предсказуема, так все же...
Цитата Сообщение от asics Посмотреть сообщение
Какой для этого случая инструмент вменяемый ?
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.08.2011, 22:22 #96
asics, Большой цикл всегда имеется возможность разбить на функции. Конечно, мы плодим лишние сущности, но этот способ более менее вменяемый.
1
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 22:24 #97
ForEveR, Та ладно, нет ответа - значит нет, я же только спросил...
0
ValeryS
Модератор
6963 / 5300 / 522
Регистрация: 14.02.2011
Сообщений: 17,880
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
  // не нашли
пользоваться не рекомендуется
0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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 {
      // не нашли
   }
}
1
ValeryS
Модератор
6963 / 5300 / 522
Регистрация: 14.02.2011
Сообщений: 17,880
05.08.2011, 22:42 #100
Цитата Сообщение от fasked Посмотреть сообщение
ValeryS, нарушается принцип DRY (Don't Repeat Yourself). Условия цикла дублируются.
Не спорю
я же сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
пользоваться не рекомендуется
просто мысли вслух
0
voral
559 / 544 / 99
Регистрация: 16.03.2008
Сообщений: 2,505
05.08.2011, 22:52 #101
Цитата Сообщение от diagon Посмотреть сообщение
Т.е. то, что вы изменили переменную объекта label1 - это не ООП? Сами себе противоречите.
Не не. Речь то не об этом. Ведь можно просто знать, чтоб изменить текст надо сделать "->" Но при этом не понимать, что это значит... Я в свое время на делфу долго плевался переходя с паскаля. Именно потому, что мне первые программисты именно такие попались показавшие делфи.

Согласитесь использовать и понимать это большая разница.
1
diagon
Higher
1936 / 1202 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.08.2011, 09:41 #102
Но я все-таки не понимаю, зачем все усложнять. Генерация исключения заставит читающего код запнуться и разбираться, с какой целью его сгенерировали. Ну и это явно менее эффективно, чем goto(там, если я не ошибаюсь, одна строчка на asm).
Если использовать несколько goto, тогда да, код становится крайне сложно отладить. Но одна маленькая goto'шка в некоторых случаях только улучшит читаемость и быстродействие.
Можно, конечно, использовать функции - но зачем все усложнять?
0
LosAngeles
Заблокирован
06.08.2011, 10:42 #103
с goto в С++ надо быть предельно осторожным. При выходе из областей видимости вызываются деструкторы для автоматических объектов. При выходе из циклов с помощью goto никакие деструкторы не вызываются, что естественно приводит к печальным последствиям. А с throw в этом плане всё в порядке
1
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.08.2011, 10:50 #104
Цитата Сообщение от diagon Посмотреть сообщение
Можно, конечно, использовать функции - но зачем все усложнять?
В примере, который я привел, использование функций все упрощает

Цитата Сообщение от LosAngeles Посмотреть сообщение
с goto в С++ надо быть предельно осторожным. При выходе из областей видимости вызываются деструкторы для автоматических объектов. При выходе из циклов с помощью goto никакие деструкторы не вызываются, что естественно приводит к печальным последствиям. А с throw в этом плане всё в порядке
Это верно, но все же не оправдывает использования исключений для выхода из циклов.
Простое правило: goto в пределах одной области видимости, не больше!

Все равно самый лучшим вариантом будут изменения на более высоком уровне, чем на уровне команд или инструкций. Серьезно, грамотный рефакторинг - это панацея
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.08.2011, 11:04 #105
Цитата Сообщение от fasked Посмотреть сообщение
нуууу....
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <iostream>
void some_c_function(const int *ptr, size_t nsize) {
 while (nsize--) {
 printf("%d, ", *ptr++);
 }
}
int main() {
 std::vector<int> vec = { 1, 2, 3, 4, 5 };
 some_c_function(&vec[0], vec.size());
return 0;
}
Ну, строго говоря, данный код не соответствует Стандарту, так как оный отнюдь не требует, чтобы вектор был реализован непременно в виде массива.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 11:04
Привет! Вот еще темы с ответами:

Поясните новичку - C++
Компилятор ругается на программу: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;math&gt; using namespace std; int main() ...

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

Поясните новичку! - C++
Задано 6-значное число. Определить, кратно ли это число 9, используя признак делимости на 9 (число делится на 9, если сумма его цифр...

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


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

Или воспользуйтесь поиском по форуму:
105
Ответ Создать тему
Опции темы

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