Why C++ is better than C?
ivansorokin — 13.02.2010 Как-то была дискуссия с vitus_wagner на тему САБЖа. Я тогда собирался написать большой пост на эту тему. Пост я написал, но он мне не очень нравился и я его так и не выложил. Я решил, что попытаюсь написать это всё заново, но буду выкладывать по чуть-чуть.Кроме того в интернетах очень много обоснований в обратную сторону. Я считаю необходимо восстановить баланс силы.
Совет 1. Используйте string вместо массива чаров
Почему массивы чаров плохие?
- Они могут переполняться (либо ваши строчки будут обрубаться, либо вы будете срать в память)
- Если вам всё-таки понадобиться настоящая строчка переменной длины, вам придётся писать больше кода, чем на Плюсах (а ещё и думать когда освобождать память)
- Специальное значение символа
'\0'
встречающегося в самых неподходящих местах
Итак
- Если вы хотите написать
char str[100];
пишитеstring str;
- Если вы хотите написать
char * str = new char[100];
(это не Си, но во многих Плюсовых программах я встречал такие вещи) пишитеstring str;
- Вместо
strcmp
надо использоватьoperator==
(вам больше не надо думать что означаетif (!strcmp(a, b)
). - Вместо
strcpy
—operator=
. - Вместо
strcat
, уstring
естьoperator+
и функцияappend
.
C++ — это очень просто. Станет ли от этого ваш код лучше? Несомненно. Кстати он ещё и заметно подсократится от этого.
Понимаете, на Сях невозможно написать класс string, чтобы я мог просто взять и пользоваться им как int'ом ни о чём не думая (попробуйте попользуйтесь GString из GLib).
На мой взгляд, одного отсутствия нормальной строчки достаточно, чтобы никогда в страшном сне не писать на Сях, но это лишь вершина айсберга.
UPD: Проредил коменты, а то какой-то холивор начался.