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

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

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

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

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

Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться.
Скачал книгу Либерти (21 день).
Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными.
Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор.
Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь?
Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
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 но незнаю как подойти к решению вопроса подскажите книги какие-то голова кругом

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LosAngeles
Заблокирован
05.08.2011, 20:03 #61
я разговор ни в какую сторону не увожу. Ты сам до сих пор не объяснил, где и как это
Цитата Сообщение от LosAngeles Посмотреть сообщение
компилятор перед вызовом конструктора, деструктора или нестатического метода неявно кладёт указатель this в стек или регистр
используется

Цитата Сообщение от Сыроежка Посмотреть сообщение
забывая, что итераторы - это очень часто те же самые указатели
итераторы - это итераторы. Как они реализованны мне до фени повторяю который уже раз по счёту, третий кажется. Когда я пишу программу, меня интересует только интерфейс инструмента, которым я пользуюсь. Если же для понимания того, как работает этот инструмент, мне ещё и в его реазлизацию надо заглядывать, я его сразу выкидываю и беру другой
Сыроежка
Заблокирован
05.08.2011, 20:05 #62
Цитата Сообщение от diagon Посмотреть сообщение
Нет.
Это класс с перегруженной операцией разыменования.



Мне больше интересно, как я смогу использовать вектор с указателями ; D


Си - возможно. Но касательно с++ - сомневаюсь =) Аргументируйте, пожалуйста.
Я вам уже сказал: идите и учите С++! Даже не серьезно обсуждать то, что вы пишите.
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:07 #63
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я вам уже сказал: идите и учите С++! Даже не серьезно обсуждать то, что вы пишите.
Т.е. аргументов у вас нету? =)
Не спорю, я с++ в районе 5 месяцев изучаю. Однако уже прочел книгу Страуструпа, чего и вам желаю. Может, познакомитесь с абстракцией данных =)
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 20:11 #64
Сыроежка, если ты собираешься реализовать контейнер вроде вектора, то указатели тебе нужны. А если ты собираешься использовать контейнер вроде вектора, то указатели тебе нафиг не нужны.
Я сейчас работаю с матрицей (вектор векторов) размером 25000*25000, использую list, deque и другие стандартные контейнеры. И ни разу мне не пришлось вспомнить об указателях.

Кстати, на Яве прекрасно программируют без всяких указателей. На Додиезе - тоже, хотя указателя там есть.

Добавлено через 2 минуты
Сыроежка, ты чего такой невежливый. Прочитай-ка мою книжку по ООП сначала! Или мож свою напишешь?
voral
436 / 416 / 59
Регистрация: 16.03.2008
Сообщений: 2,046
05.08.2011, 20:13 #65
Я самоучка. При чем нельзя сказать, что я правильно и последовательно все изучал. Поначалу, можно сказать, даже понятия не имел, что такое указатели. Писал на том уровне абстракции, что можно и без них. Но вот однажды погрузился и очень многое встало на места. Так, что я согласен с теми кто говорит, что понимать это нужно.

Кстсати, вон на делфе на той же можно наклепать некую несложную программу. (А ведь паскаль дают во многих школах), т.е. уровень вхождения доступный. Наклепал форму,тыкнул на кнопку, приписал формулу типа label1.caption:='dsad'; И программа готова. И, в принципе, возможен какойто круг задач, где этого достаточно. И в общем то получается, что и ООП понимать не обязательно..... И т.д и т.д.

Но вот можно ли говорить как о специалисте непонимающем ООП.... Имхо, как то так...
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 20:18 #66
Цитата Сообщение от voral Посмотреть сообщение
Я самоучка. При чем нельзя сказать, что я правильно и последовательно все изучал. Поначалу, можно сказать, даже понятия не имел, что такое указатели. Писал на том уровне абстракции, что можно и без них. Но вот однажды погрузился и очень многое встало на места. Так, что я согласен с теми кто говорит, что понимать это нужно.

Но вот можно ли говорить как о специалисте непонимающем ООП.... Имхо, как то так...
Совершенно верно! Понимать нужно. Но вообще-то нужно еще глубже - на уровне архитектуры компьютера понимать. Тогда понимание указателей наступает на счет НОЛЬ, то есть вы их уже знаете, если знаете архитектуру.
Но далеко не во всякой программе нужно их использовать. Более того, чем меньше используешь указатели, тем лучше!
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 20:20 #67
Цитата Сообщение от diagon Посмотреть сообщение
Нет.
В некотором роде да:
С++03
Since iterators are an abstraction of pointers, their semantics is a generalization of most of the semantics of pointers in C++
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:36 #68
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Более того, чем меньше используешь указатели, тем лучше!
Когда вы совсем (не о Вас, Валерий, а абстрактно о программисте) научитесь обходиться без указателей, вы становитесь "Java"-программистом
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.08.2011, 20:36 #69
Цитата Сообщение от diagon Посмотреть сообщение
Мне больше интересно, как я смогу использовать вектор с указателями ; D
нуууу....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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;
}
Стыдно не знать, что такое указатели и говорить, что пишешь на C++. Стыдно, товарищи, стыдно...
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:50 #70
Цитата Сообщение от fasked Посмотреть сообщение
нуууу....
Вектор+указатели+printf
Волшебный стиль программирования, преемники оценят.
Я имел в виду ситуации, где это действительно уместно.

Цитата Сообщение от fasked Посмотреть сообщение
Стыдно не знать, что такое указатели и говорить, что пишешь на C++. Стыдно, товарищи, стыдно...
Я в общем-то с си начинал, так что знаю.



Цитата Сообщение от voral Посмотреть сообщение
Я самоучка. При чем нельзя сказать, что я правильно и последовательно все изучал.
Аналогично. Писал так, как работает у меня, поэтому сильно не хватало критики. Даже подпись соответствующую сделал =)
Но начинал я наоборот с си, потом перешел на STL, сейчас потихоньку яву изучаю, там вообще указателей нету. Сейчас пользуюсь разве что указателями на функции. Во-первых, так проще, не нужно отвлекаться на " а правильно ли это будет работать?", а во-вторых стабильнее.





Цитата Сообщение от voral Посмотреть сообщение
на делфе на той же можно наклепать некую несложную программу. (А ведь паскаль дают во многих школах), т.е. уровень вхождения доступный. Наклепал форму,тыкнул на кнопку, приписал формулу типа label1.caption:='dsad'; И программа готова.
Цитата Сообщение от voral Посмотреть сообщение
И в общем то получается, что и ООП понимать не обязательно....
Т.е. то, что вы изменили переменную объекта label1 - это не ООП? Сами себе противоречите.
Понимать без сомнения надо, чтобы свои классы писать. Где-то у Страуструпа читал, что процесс разработки программы делится на какие-то пункты, среди них поиск стандартных компонентов, подходящих для этой программы, и написание своих стандартных компонентов.


Цитата Сообщение от asics Посмотреть сообщение
В некотором роде да:
Ключевое слово - abstraction
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:51 #71
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я вам уже сказал: идите и учите С++! Даже не серьезно обсуждать то, что вы пишите.
Да уж, никогда бы такое ValeryLaptev и diagon не сказала бы... Ощущение, что от них поучится многому можно
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 20:51 #72
Понимаете, С++ - это язык-конструктор. А в конструкторе - много разных деталей. Есть всякие большие "железки" вроде классов и т.п. А есть типа мелкие "болты и гайки" - указатели. Указатели - это очень машинно-ориентированная конструкция, хотя их и пытались "облагородить". Итератор - это высокоуровневая абстракция, которая в С++ намеренно сделана похожей на указатель - из-за массивов. Но вообще-то итератор - это объект некоего класса, имеющий доступ к элементам контейнера. Я могу итератор для вектора реализовать на основе индексов, а не на основе указателей.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
05.08.2011, 20:55 #73
Цитата Сообщение от diagon Посмотреть сообщение
Ключевое слово - abstraction
Кэп ? Я же написал:

Цитата Сообщение от asics Посмотреть сообщение
В некотором роде
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:56 #74
Цитата Сообщение от diagon Посмотреть сообщение
Сейчас пользуюсь разве что указателями на функции. Во-первых, так проще, не нужно отвлекаться на " а правильно ли это будет работать?", а во-вторых стабильнее.
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:58 #75
Цитата Сообщение от Olga_ Посмотреть сообщение
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
Что именно?
Игнорирование указателей или использование указателей на функции? Со вторым согласен, но иногда действительно удобно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 20:58
Привет! Вот еще темы с ответами:

Поясните новичку - 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++
Пожалуйста помогите , я хочу изучить С++, подскажите с чего начать, с какой книги , какой прогой работать ?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.08.2011, 20:58
Ответ Создать тему
Опции темы

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