Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выучить С++ на столько, чтобы его полюбить. 
:(
    Опции темы
Tobuk
Дата 22.11.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



Знаю С++ на уровне классов, шаблонов перегрузок и прочего.
Знаю наследование const ссылки и прочее, но пользоваться ими не умею. (ни как не найду где их использовать)
Не люблю С++. Люблю Си.
Так бы и писал на Си, но все вокруг пишут на С++. Хвалят его. Любят его. Это не дает мне покоя.

Как же выучить С++ на столько, чтобы полюбить его?
Как найти применение всяким mutable и наследованию?
Как делать такие же вещи, как Александреску и чувствовать себя крутым программистом С++?

PM MAIL   Вверх
Void
Дата 22.11.2009, 23:55 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Судя по всему, это нормально.
Цитата(http://harmful.cat-v.org/software/c++/)
If you like C++, you don't know C++. There's a mutual exclusion going on here, and I've yet to see a counter-example other than possibly a few of the members of the standards committee.


Это сообщение отредактировал(а) Void - 22.11.2009, 23:56


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Abyx
Дата 22.11.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(Tobuk @  22.11.2009,  22:59 Найти цитируемый пост)
ни как не найду где их использовать

если ничего не писать - не будешь знать где применить.
больше кодить надо, тогда будет понятно что и зачем придумано
PM MAIL   Вверх
niXman
Дата 22.11.2009, 23:58 (ссылка)   | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: 0
Всего: 0



А ты в своих программах попробуй использовать STL. Вот тогда поймешь что такое С++. И увидишь на сколько упрощается код программы.
Наследование - оно везде наследование. ничего нового в нем нет.
mutable - такое же г* как и const_cast<>().
Александреску - нерд.
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
nerezus
Дата 23.11.2009, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Tobuk, попробуй написать программу >500кб исходников ) Поймешь, что такое ООП и почему он делает мир проще ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Леопольд
Дата 23.11.2009, 08:59 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Посмотри в сторону библиотек для С++. Boost, Ogre и т.д. на любой вкус и цвет. Напиши что нибудь с их использованием. Например Boost Asio...

Это сообщение отредактировал(а) Леопольд - 23.11.2009, 09:11


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Lazin
Дата 23.11.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Tobuk @  22.11.2009,  22:59 Найти цитируемый пост)
Знаю С++ на уровне классов, шаблонов перегрузок и прочего.
Знаю наследование const ссылки и прочее, но пользоваться ими не умею. (ни как не найду где их использовать)
Не люблю С++. Люблю Си.
Так бы и писал на Си, но все вокруг пишут на С++. Хвалят его. Любят его. Это не дает мне покоя.

это нормально, С++ - сильно перегружен различными концепциями, программируя на Си, ты просто пишешь код, который работает с данными в памяти через указатели и тд., программируя на С++ ты описываешь типы данных, которые описывают различные объекты, расположенные в памяти и операции над этими объектами, в принципе, для простых вещей, это лишний overhead, но для сложных - данный подход дает ощутимые преимущества

Цитата(Tobuk @  22.11.2009,  22:59 Найти цитируемый пост)
Как же выучить С++ на столько, чтобы полюбить его?
Как найти применение всяким mutable и наследованию?
Как делать такие же вещи, как Александреску и чувствовать себя крутым программистом С++?

главное, нужно заниматься этим не для того, что-бы чувствовать себя крутым программистом
лично я пишу на определенном подмножестве с++, это сильно упрощает дело
пример, код на Си:
Код

// вызов А
int a = 0;
Foo(a);
// вызов Б
Foo(&a);

что можно сказать о значении переменной a, после вызова А (речь идет о Си)? то, что оно не изменится
после вызова Б, значение переменной может измениться, так-как по вызову видно, что в ф-ю передается указатель на int
теперь аналогичный код на С++:
Код

// вызов А
int a = 0;
Foo(a);
// вызов Б
Foo(&a);

теперь о значении переменной после вызова А ничего нельзя сказать, потому-что в С++ есть ссылки, и Foo вполне может принимать не константную ссылку в качестве параметра и изменять значение переменной. Поэтому, я не пользуюсь не константными ссылками в сигнатурах функций/методов, в этом случае, я могу с уверенностью сказать, изменится ли значение переменной после вызова А или нет, глядя на вызов smile 
ну и таких мелочей достаточно много
PM MAIL Skype GTalk   Вверх
kemiisto
Дата 23.11.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата
выучить С++ на столько, чтобы его полюбить

Это страшный сон, товарищи! smile 

user posted image


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Abyx
Дата 23.11.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Lazin, проще смотреть на сигнатуру Foo
или писать
Код

// вызов А
const int a = 0;
Foo(a);
// вызов Б
Foo(&a);

чем вводить ограничение на использование ссылок
PM MAIL   Вверх
niXman
Дата 23.11.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: 0
Всего: 0



Abyx, Да нет, не проще. Сам пользуюсь таким же принципом. Если в функцию нужно передать объект(при условии что сам объект не модифицируется), то по константной ссылке. А если предполагается изменение объекта вне самой функции, то по указателю.

Добавлено через 2 минуты и 39 секунд
kemiisto, Вам сюды ;)

Это сообщение отредактировал(а) niXman - 23.11.2009, 19:07
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Abyx
Дата 23.11.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



указатель != ссылка, такая замена только для повышения читабельности кода, в общем случае неравноценна.
конечно, если в коде ссылки можно безболезненно заменить на указатели, это другое дело, но это действительно очень узкое подмножество С++

Добавлено через 9 минут и 57 секунд
и да, редко бывают правила одинаково хорошо подходящие ко всем ситуациям.

вот например сегодня читал документацию spirit2, там сделали
Код

template <typename Iterator, typename Expr>
inline bool
parse(
    Iterator& first
  , Iterator last
  , Expr const& expr);


имхо это гораздо лучшее решение, чем было в 1.8
Код

    template <typename IteratorT, typename DerivedT>
    parse_info<IteratorT>
    parse
    (
        IteratorT const&        first,
        IteratorT const&        last,
        parser<DerivedT> const& p
    );


Это сообщение отредактировал(а) Abyx - 23.11.2009, 19:19
PM MAIL   Вверх
powerfox
Дата 24.11.2009, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Цитата(Abyx @  23.11.2009,  20:18 Найти цитируемый пост)
указатель != ссылка, такая замена только для повышения читабельности кода, в общем случае неравноценна.

В чём разница, кроме неявного приведения типов в случае константной ссылки?
Стиль, который использует Lazin, рекомендуют, наверное, в любой книге по ++. Во всяком случае Страуструп точно.


--------------------
user posted image
PM WWW   Вверх
PRF
Дата 24.11.2009, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



я считаю, что этот вопрос "выучить чтобы полюбить" это бред... 
вы можете полюбить жигули когда узнали все о ней полностью?)) ну грубое сравнение , но все же)) 
таких примеров можно много написать) но я не могу)) хз) я просто хотел сказать, что чтобы полюбить, точно не поможет знание о нем все, вот вы любите СИ чистый, так же наверно как я люблю С++ )) и не потому что он предоставляет там ух как много всего) но я просто получаю удовольствие если пишу на нем, + функционал))
PM MAIL   Вверх
mes
Дата 24.11.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(powerfox @  23.11.2009,  23:29 Найти цитируемый пост)
В чём разница, кроме неявного приведения типов в случае константной ссылки?

1. ссылка легко оптимизируется компилятором
2. не надо проверять на нуль (или какие то дополнительные (условные) гарантии заменяющие проверку)
3. явно видно что функция не может принимать ноль как аргумент

2 и 3 й пункт, несмотря на кажущуюся близость, не одинаковы. 2й - взгляд изнутри (разроботчика), а 3й снаружи (пользователя).




--------------------
PM MAIL WWW   Вверх
Lazin
Дата 24.11.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Abyx @  23.11.2009,  18:45 Найти цитируемый пост)
azin, проще смотреть на сигнатуру Foo

не проще, вызов в одном месте, сигнатура - в другом

Цитата(Abyx @  23.11.2009,  18:45 Найти цитируемый пост)
или писать
Код

// вызов А
const int a = 0;
Foo(a);
// вызов Б
Foo(&a);

ну и как константу передать в ф-ю, принимающую не константную ссылку? smile 

Цитата(mes @  24.11.2009,  10:11 Найти цитируемый пост)
1. ссылка легко оптимизируется компилятором

указатель - то-же

Цитата(mes @  24.11.2009,  10:11 Найти цитируемый пост)
2. не надо проверять на нуль (или какие то дополнительные (условные) гарантии заменяющие проверку)

Цитата(mes @  24.11.2009,  10:11 Найти цитируемый пост)
3. явно видно что функция не может принимать ноль как аргумент

с этим согласен, но у нас ведь еще есть константные ссылки, которые можно использовать в большинстве таких случаев smile 
к тому-же, найти, где и когда был разыменован нулевой указатель - очень легко, а найти баги, связаные с тем, что программист не ожидал того, что состояние объекта будет изменено - намного сложнее, поэтому я пожалуй останусь при своем мнении smile 

Это сообщение отредактировал(а) Lazin - 24.11.2009, 10:53
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.