Си++: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 163:
 
=== Логический тип и перечисления ===
 
==== Логический тип ====
 
В Си классически ложь и истина были просто нулём и не-нулём. (Если хотите — нулём и единицей.) Например, «<tt>3 > 2</tt>» равно единице; «<tt>5 < 3</tt>» равно нулю.
 
В Си++ придумали тип <tt>bool</tt>, который может иметь два значения — «<tt>false</tt>» (ложь) и «<tt>true</tt>» (истина). Это ничего нового не даёт, но делает программы понятнее, потому что в соответствующих местах теперь можно писать «честные» <tt>bool</tt>, <tt>true</tt> и <tt>false</tt> вместо <tt>int</tt>, <tt>1</tt> и <tt>0</tt>.
 
Безусловно, если вы используете <tt>bool</tt> в арифметическом выражении, то <tt>true</tt> станет единицей, а <tt>false</tt> нулём. Помните, что Си++ полностью совместим с Си, поэтому все старые приёмы работают так же.
 
==== Перечислимые типы ====
 
Как и константы, они были и в Си, однако использовались даже реже, потому что были ещё кривее. (Некоторые эстеты их всё же использовали, но это ничего не значит.)
 
Ключевое слово «<tt>enum</tt>» теперь создаёт новый полноценный тип. Если в Си после
enum color {red, green, blue};
нужно было всегда называть тип «<tt>enum color</tt>», то в Си++ его название — просто «<tt>color</tt>». (Аналогичную метаморфозу претерпели и типы, определяемые ключевыми словами «<tt>struct</tt>» и «<tt>union</tt>».)
 
TODO: главное отличие перечислений Си++ от Си.
 
=== Операторы управления динамической памятью, инициализация массивов ===