Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/60: Рейтинг темы: голосов - 60, средняя оценка - 4.65
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы все спорите с Domenick, который очевидно на голову выше вас в понимании С++!
Си - возможно. Но касательно с++ - сомневаюсь =) Аргументируйте, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2011, 20:03

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

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

Посоветуйте новичку
Всем привет, посоветуй пожалуйста хороший учебник по php. Я почитал эту тему https://www.cyberforum.ru/php-beginners/thread125023.html...

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru