Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/51: Рейтинг темы: голосов - 51, средняя оценка - 4.98
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!
После школьной программы знаком с основами Паскаля, Делфи. Скоро поступлю в ВУЗ. Скорей всего буду изучать там С++. Решил немного подготовиться.
Скачал книгу Либерти (21 день).
Сейчас остановился на девятом дне. "Прошел" указатели и ссылки. Возникают большие трудности при использовании указателей и ссылок в классах. Утечки, нулевые объекты, мины замедленного действия, одним словом остались для меня непонятными.
Во-первых мне интересно - я виноват? Или это тяжелые темы для всех? Сколько вы потратили дней, чтобы полностью разобраться в этих темах? Вся сложность в них в том, что надо понимать, как записывается информация, где хранится, когда будет запускаться конструктор, copy конструктор, деструктор. Как надо использовать функции чтобы не запускать copy конструктор.
Во-вторых я хочу спросить, а надо ли мне новичку, знакомым с С++ 7 дней, разбираться в таких, как мне кажется профессиональных вещах? Может можноо обратиться к ним позже? Или дальше без этих тем не уедешь?
Тоесть основной вопрос: если остались непонятки в этих темах, можно изучать дальше, а потом вернуться к ним? Или лучше сейчас все понять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2011, 17:04
Ответы с готовыми решениями:

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

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

Посоветуйте книгу/-и новичку
Доброе время суток человечество! Посоветуйте пожалуйста книгу по с++ новичку, желательно поновее....

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

126
Заблокирован
05.08.2011, 09:28 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Domenick Посмотреть сообщение
т е ты хочешь сказать при создании экземпляра класса (конструктор) не испольузется указатель? если нет, то где оно хранится все? и как к этому обратиться? а диструктор освобождает место по указателю, разве нет?
используется неявно. Компилятор каждый раз засовывает в стек или в один из регистров указатель, который потом используется в теле конструктора, деструктора или нестатического метода как this. Но чтобы писать хорошие программы, такие подробности знать не нужно. Только для расширения кругозора или крекинга

Добавлено через 2 минуты
Цитата Сообщение от Domenick Посмотреть сообщение
да даже банальное считывание с файла идет через указатели.
лично я прекрасно читаю файлы, не используя указатели
0
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:30 42
Цитата Сообщение от LosAngeles Посмотреть сообщение
используется неявно. Компилятор каждый раз засовывает в стек или в один из регистров указатель, который потом используется в теле конструктора, деструктора или нестатического метода как this. Но чтобы писать хорошие программы, такие подробности знать не нужно. Только для расширения кругозора или крекинга

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

лично я прекрасно читаю файлы, не используя указатели
если незнать что используются указатели, можно один раз попасть на корявые значения, и потом сидеть пару дней думать " какого хрена" и не дебаг и не что не поможет.
как читаешь файлы? в 2 словах опиши.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 09:31 43
Domenick, с помощью объектно-ориентированной системы ввода-вывода... Без указателей...
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 09:32 44
Цитата Сообщение от Domenick Посмотреть сообщение
прочел, про STL и хотите сказать в том же vector или string не используются указатели?
с/с++ это язык системного программирования, и в его основе лежит 90% работы с памятью, да даже банальное считывание с файла идет через указатели.
и что за уровень абстракции там?
Какая разница, где что используется?
Я могу спокойно использовать вектор, и меня должно заботить не то, как он реализован, а то, как с его помощью можно решить поставленную цель.
Почитайте.
1
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:33 45
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Domenick, с помощью объектно-ориентированной системы ввода-вывода... Без указателей...
например, как ты считаешь с файла 1.txt первую строчку?
0
Заблокирован
05.08.2011, 09:34 46
Цитата Сообщение от Domenick Посмотреть сообщение
например, как ты считаешь с файла 1.txt первую строчку?
http://www.cplusplus.com/refer... m/fstream/
0
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:35 47
Цитата Сообщение от diagon Посмотреть сообщение
Какая разница, где что используется?
Я могу спокойно использовать вектор, и меня должно заботить не то, как он реализован, а то, как с его помощью можно решить поставленную цель.
Почитайте.
но темне-мение вы согласны что указатели используются?
0
Higher
1953 / 1219 / 120
Регистрация: 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
Заблокирован
05.08.2011, 09:38 49
Цитата Сообщение от Domenick Посмотреть сообщение
но темне-мение вы согласны что указатели используются?
с этим никто и не спорит
0
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:38 50
Цитата Сообщение от LosAngeles Посмотреть сообщение
смешно)
например используя
read -Read block of data
хочешь сказать этот read читает без указателя?)))) если ты используешь какуюто библиотеку(которая делает все за тебя) это незначит что надо говорить, что этого там нет)
0
Заблокирован
05.08.2011, 09:40 51
читать до просветления
http://www.cplusplus.com/refer... tor%3E%3E/
http://www.cplusplus.com/refer... tor%3C%3C/
0
0 / 0 / 0
Регистрация: 02.08.2011
Сообщений: 12
05.08.2011, 09:46 52
Цитата Сообщение от diagon Посмотреть сообщение
Да, они используются, но блин, на с++ можно спокойно кодить вообще не зная, что это такое.
можно) но лучше это понимать) чтобы не натыкатся на косяки со значениями)
0
Заблокирован
05.08.2011, 19:20 53
Цитата Сообщение от diagon Посмотреть сообщение
Ну а при чем здесь массивы в си-стиле?
В с++ есть STL, в которой есть очень удобные контейнеры. При их использовании не нужны никакие указатели, т.к. это другой уровень абстракции.
Как не нужны указатели? А итераторы - это не указатели? Например, многие реализации шаблонного класса вектор в качестве итераторов используют обычные указатели!
0
Заблокирован
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
Заблокирован
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
Заблокирован
05.08.2011, 19:45 58
Цитата Сообщение от Сыроежка Посмотреть сообщение
А разговор идет о понимании того, что объектно-ориентированное программирование опирается на указатели. Я вам уже привел на словах пример полиморфизма суказателями
нет, как раз разговор об этом не шёл, может ты ветку перепутал, тут очевидно никто про это и не упоминал

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

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

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

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

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

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

Посоветуйте новичку книжку или сайт, где описывается создание графического интерфейса в VC
Добрый вечер, подскажите пожалуйста какую нибудь книжку или сайт где описывается создание...

Посоветуйте новичку
Всем привет, посоветуй пожалуйста хороший учебник по php. Я почитал эту тему...

Посоветуйте новичку
Хочу собрать комп до 100к.Вот то, что сам насобирал: 1)процессор - Intel core i7-6700K Box...

Посоветуйте новичку!!
Здравствуйте, пару минут проведя на форуме меня заинтересовал раздел вебпрограммирование (Решил как...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru