Форум программистов, компьютерный форум 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++ Подскажите новичку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
05.08.2011, 20:03     Посоветуйте новичку в С++ #61
я разговор ни в какую сторону не увожу. Ты сам до сих пор не объяснил, где и как это
Цитата Сообщение от LosAngeles Посмотреть сообщение
компилятор перед вызовом конструктора, деструктора или нестатического метода неявно кладёт указатель this в стек или регистр
используется

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



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


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

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

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

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

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

Но вот можно ли говорить как о специалисте непонимающем ООП.... Имхо, как то так...
Совершенно верно! Понимать нужно. Но вообще-то нужно еще глубже - на уровне архитектуры компьютера понимать. Тогда понимание указателей наступает на счет НОЛЬ, то есть вы их уже знаете, если знаете архитектуру.
Но далеко не во всякой программе нужно их использовать. Более того, чем меньше используешь указатели, тем лучше!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:36     Посоветуйте новичку в С++ #68
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Более того, чем меньше используешь указатели, тем лучше!
Когда вы совсем (не о Вас, Валерий, а абстрактно о программисте) научитесь обходиться без указателей, вы становитесь "Java"-программистом
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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
 Аватар для diagon
1920 / 1186 / 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_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:51     Посоветуйте новичку в С++ #71
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я вам уже сказал: идите и учите С++! Даже не серьезно обсуждать то, что вы пишите.
Да уж, никогда бы такое ValeryLaptev и diagon не сказала бы... Ощущение, что от них поучится многому можно
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
05.08.2011, 20:51     Посоветуйте новичку в С++ #72
Понимаете, С++ - это язык-конструктор. А в конструкторе - много разных деталей. Есть всякие большие "железки" вроде классов и т.п. А есть типа мелкие "болты и гайки" - указатели. Указатели - это очень машинно-ориентированная конструкция, хотя их и пытались "облагородить". Итератор - это высокоуровневая абстракция, которая в С++ намеренно сделана похожей на указатель - из-за массивов. Но вообще-то итератор - это объект некоего класса, имеющий доступ к элементам контейнера. Я могу итератор для вектора реализовать на основе индексов, а не на основе указателей.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 20:55     Посоветуйте новичку в С++ #73
Цитата Сообщение от diagon Посмотреть сообщение
Ключевое слово - abstraction
Кэп ? Я же написал:

Цитата Сообщение от asics Посмотреть сообщение
В некотором роде
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 20:56     Посоветуйте новичку в С++ #74
Цитата Сообщение от diagon Посмотреть сообщение
Сейчас пользуюсь разве что указателями на функции. Во-первых, так проще, не нужно отвлекаться на " а правильно ли это будет работать?", а во-вторых стабильнее.
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:58     Посоветуйте новичку в С++ #75
Цитата Сообщение от Olga_ Посмотреть сообщение
Сейчас это считается признаком плохого тона, извини, diagon, при всем уважении
Что именно?
Игнорирование указателей или использование указателей на функции? Со вторым согласен, но иногда действительно удобно.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 21:01     Посоветуйте новичку в С++ #76
Цитата Сообщение от diagon Посмотреть сообщение
Что именно?
Игнорирование указателей или использование указателей на функции? Со вторым согласен, но иногда действительно удобно.
Я про указатели на функции, не более того. Скоро это как использование goto будет считаться
diagon
05.08.2011, 21:05
  #77

Не по теме:

Цитата Сообщение от Olga_ Посмотреть сообщение
Я про указатели на функции, не более того. Скоро это как использование goto будет считаться
Где-то у Страуструпа хороший пример видел, там вроде меню с помощью массива указателей на функции предлагалось.
А я и goto иногда использую =)
Иногда попадаются задачи, где приходится использовать 5-8 вложенных циклов. Можно, конечно, завести булеву переменную и таскать ее по всем условиями, и чуть что, изменять все условия... А можно обойтись одним маленьким goto.
Но это уже, во-первых, холивар, во-вторых, лютый оффтоп.

asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
05.08.2011, 21:08     Посоветуйте новичку в С++ #78
Цитата Сообщение от diagon Посмотреть сообщение
А я и goto иногда использую =)
Иногда попадаются задачи, где приходится использовать 5-8 вложенных циклов. Можно, конечно, завести булеву переменную и таскать ее по всем условиями, и чуть что, изменять все условия... А можно обойтись одним маленьким goto.
http://www.cyberforum.ru/cpp-beginne...tml#post879619
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
05.08.2011, 21:10     Посоветуйте новичку в С++ #79
Цитата Сообщение от diagon Посмотреть сообщение

Не по теме:


Где-то у Страуструпа хороший пример видел, там вроде меню с помощью массива указателей на функции предлагалось.
А я и goto иногда использую =)
Иногда попадаются задачи, где приходится использовать 5-8 вложенных циклов. Можно, конечно, завести булеву переменную и таскать ее по всем условиями, и чуть что, изменять все условия... А можно обойтись одним маленьким goto.
Но это уже, во-первых, холивар, во-вторых, лютый оффтоп.

Для себя так можно поступать, но в крупных проектах не стоит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 21:12     Посоветуйте новичку в С++
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.08.2011, 21:12     Посоветуйте новичку в С++ #80
Цитата Сообщение от diagon Посмотреть сообщение
Вектор+указатели+printf
Например, один из модулей вполне может быть сишным, по многим причинам (скорость, бинарная совместимость, нежелание переписывания ее на другом языке и т.д.), представьте, что эта функция в отдельном компилированном объектном файле (библиотеке). Я не просто так дал такое имя функции.

asics, исключения для выхода из циклов - это еще хуже, чем goto
Yandex
Объявления
05.08.2011, 21:12     Посоветуйте новичку в С++
Ответ Создать тему
Опции темы

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