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

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

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

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

31.07.2011, 17:04. Просмотров 7775. Ответов 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
LosAngeles
Заблокирован
05.08.2011, 09:34 #46
Цитата Сообщение от Domenick Посмотреть сообщение
например, как ты считаешь с файла 1.txt первую строчку?
http://www.cplusplus.com/reference/iostream/fstream/
0
Domenick
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:35 #47
Цитата Сообщение от diagon Посмотреть сообщение
Какая разница, где что используется?
Я могу спокойно использовать вектор, и меня должно заботить не то, как он реализован, а то, как с его помощью можно решить поставленную цель.
Почитайте.
но темне-мение вы согласны что указатели используются?
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 09:36 #48
Цитата Сообщение от Domenick Посмотреть сообщение
например, как ты считаешь с файла 1.txt первую строчку?
C++
1
2
3
4
5
6
7
#include <fstream>
#include <sstream>
int main(){
    std::ifstream in("1.txt");
    std::string str;
    std::getline(in, str);
}
Где здесь указатели?
В реализации этих классов, они, вероятнее всего, есть, но это другой слой абстрагирования, т.е. реализация этих классов не должна волновать программиста
но темне-мение вы согласны что указатели используются?
Да, они используются, но блин, на с++ можно спокойно кодить вообще не зная, что это такое.
0
LosAngeles
Заблокирован
05.08.2011, 09:38 #49
Цитата Сообщение от Domenick Посмотреть сообщение
но темне-мение вы согласны что указатели используются?
с этим никто и не спорит
0
Domenick
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:38 #50
Цитата Сообщение от LosAngeles Посмотреть сообщение
смешно)
например используя
read -Read block of data
хочешь сказать этот read читает без указателя?)))) если ты используешь какуюто библиотеку(которая делает все за тебя) это незначит что надо говорить, что этого там нет)
0
LosAngeles
Заблокирован
05.08.2011, 09:40 #51
читать до просветления
http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/
http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/
0
Domenick
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:46 #52
Цитата Сообщение от diagon Посмотреть сообщение
Да, они используются, но блин, на с++ можно спокойно кодить вообще не зная, что это такое.
можно) но лучше это понимать) чтобы не натыкатся на косяки со значениями)
0
Сыроежка
Заблокирован
05.08.2011, 19:20 #53
Цитата Сообщение от diagon Посмотреть сообщение
Ну а при чем здесь массивы в си-стиле?
В с++ есть STL, в которой есть очень удобные контейнеры. При их использовании не нужны никакие указатели, т.к. это другой уровень абстракции.
Как не нужны указатели? А итераторы - это не указатели? Например, многие реализации шаблонного класса вектор в качестве итераторов используют обычные указатели!
0
LosAngeles
Заблокирован
05.08.2011, 19:22 #54
Цитата Сообщение от Сыроежка Посмотреть сообщение
Например, многие реализации шаблонного класса вектор в качестве итераторов используют обычные указатели
ключевое слово тут "в реализации"
0
Сыроежка
Заблокирован
05.08.2011, 19:26 #55
Цитата Сообщение от LosAngeles Посмотреть сообщение
используется неявно. Компилятор каждый раз засовывает в стек или в один из регистров указатель, который потом используется в теле конструктора, деструктора или нестатического метода как this. Но чтобы писать хорошие программы, такие подробности знать не нужно. Только для расширения кругозора или крекинга

Добавлено через 2 минуты

лично я прекрасно читаю файлы, не используя указатели
Да кто вам такую глупость сказал, что чтобы писать хорошие программы, такие подробности знать не надо?!!! Как раз чтобы писать хорошие программы, нужно очень хорошо знать подробности!

Например, вы знаете различие между

C++
1
class A;
...

C++
1
this->~A();
и
C++
1
~A():
???

Добавлено через 1 минуту
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Domenick, с помощью объектно-ориентированной системы ввода-вывода... Без указателей...
Объектно-ориентированная система ввода использует итераторы, которые очень часто являются простыми указателями!

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
Какая разница, где что используется?
Я могу спокойно использовать вектор, и меня должно заботить не то, как он реализован, а то, как с его помощью можно решить поставленную цель.
Почитайте.
А как вы можете использовать вектор без указателей?!!! И как вы можете реализовать полиморфизм, когда вектор содержит указатели, определенные как указатели на базовый класс?!

Вы все спорите с Domenick, который очевидно на голову выше вас в понимании С++! Бессмысленный спор. Лучше идите и учите С++!
1
LosAngeles
Заблокирован
05.08.2011, 19:30 #56
Цитата Сообщение от Сыроежка Посмотреть сообщение
Да кто вам такую глупость сказал, что чтобы писать хорошие программы, такие подробности знать не надо?!!!
внимание! есть тут ещё люди которые считают что, то что компилятор перед вызовом конструктора, деструктора или нестатического метода неявно кладёт указатель this в стек или регистр важно знать? И если такие люди есть, то покажите программы, где это знание используется? Хотя в любом случае мне всё равно. Очевидно это будет отстойная программа.
0
Сыроежка
Заблокирован
05.08.2011, 19:36 #57
Цитата Сообщение от LosAngeles Посмотреть сообщение
внимание! есть тут ещё люди которые считают что, то что компилятор перед вызовом конструктора, деструктора или нестатического метода неявно кладёт указатель this в стек или регистр важно знать? И если такие люди есть, то покажите программы, где это знание используется? Хотя в любом случае мне всё равно. Очевидно это будет отстойная программа.
В стек кладет указатель, или в регистр - разговор не о том! А разговор идет о понимании того, что объектно-ориентированное программирование опирается на указатели. Я вам уже привел на словах пример полиморфизма суказателями. Могу его написать

C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
public:
virtual ~A() {}
};
 
class B: public A
{
};
 
A *p = new B;
Это один из краеугольных камней объектно-ориентированного программирования. И надо очень хорошо понимать механику работу с указателями!
0
LosAngeles
Заблокирован
05.08.2011, 19:45 #58
Цитата Сообщение от Сыроежка Посмотреть сообщение
А разговор идет о понимании того, что объектно-ориентированное программирование опирается на указатели. Я вам уже привел на словах пример полиморфизма суказателями
нет, как раз разговор об этом не шёл, может ты ветку перепутал, тут очевидно никто про это и не упоминал

Чтобы программировать на С++ или любом другом языке знать, как реализованны его внутренности не нужно. Иначе это очевидно хреновый язык. Так что, то что я выше описал точно не необходимо и пригодится нигде не может. Пусть С++ опирается на что угодно, хоть на указатели, хоть на чё

Если для понимания того, что происходит, нужно увидеть реализацию, это не абстракция(с) - Ф. Дж. Плоджер
0
Сыроежка
Заблокирован
05.08.2011, 19:54 #59
Цитата Сообщение от LosAngeles Посмотреть сообщение
нет, как раз разговор об этом не шёл, может ты ветку перепутал, тут очевидно никто про это и не упоминал

Чтобы программировать на С++ или любом другом языке знать, как реализованны его внутренности не нужно. Иначе это очевидно хреновый язык. Так что, то что я выше описал точно не необходимо и пригодится нигде не может. Пусть С++ опирается на что угодно, хоть на указатели, хоть на чё

Если для понимания того, что происходит, нужно увидеть реализацию, это не абстракция(с) - Ф. Дж. Плоджер
Нет, я не ошибся, я хорошо понял, о чем идет речь. Это вы просто уводите в сторону. Разговор начинался именно с того, что в С++ регулярно используются указатели, и знать их нужно. Вы же стали этот тезис отвергать, ссылаясь на всякие там контейнеры и т.д., забывая, что итераторы - это очень часто те же самые указатели.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:03 #60
Цитата Сообщение от Сыроежка Посмотреть сообщение
А итераторы - это не указатели?
Нет.
Это класс с перегруженной операцией разыменования.
Что лежит в его реализации никого вообще волновать не должно.

Цитата Сообщение от Сыроежка Посмотреть сообщение
А как вы можете использовать вектор без указателей?!!!
Мне больше интересно, как я смогу использовать вектор с указателями ; D

Вы все спорите с Domenick, который очевидно на голову выше вас в понимании С++!
Си - возможно. Но касательно с++ - сомневаюсь =) Аргументируйте, пожалуйста.
0
05.08.2011, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 20:03
Привет! Вот еще темы с ответами:

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


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

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

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