ору)
namespace MyVeryOwnNameSpace {std :: vector lt; std :: string gt; StringTable;
} My=MyVeryOwnNameSpace;
Простори імен потрібні, Щоб не вінікало колізій между пакетами, что мают однакові імена глобальних змінніх, функцій и тіпів. Спеціальнім випадка є безіменній простір імен
namespace {
...
}
Всі імена, опісані в ньом, Доступні в поточній одиниці трансляції и более ніде, неначебто ми до шкірного Опису приписали static.
Доданий новий тип bool, что має значення true и false. Операції порівняння повертаються тип bool. Вирази в дужках после if, while приводяться до типу bool.
//означає, что вся частина рядка, что залиша, є коментарями.
Додані шаблонів (template). Например, template lt; class T gt; T Min (T x, T у) {return x lt; y? X: y;} візначає функцію Min для будь-якіх тіпів. Шаблони могут задаваті НЕ только Функції, но и тіпі. Например, template lt; class T gt; struct Array {int len; T * val;}; візначає масив значень будь-которого типом, после чего ми Можемо писати Array lt; float gt; x;
Введена стандартна бібліотека шаблонів (STL, англ. lt; # justify gt; struct Time {int hh, mm, ss;}; t1, t2;
Усередіні Структури або класом можна опісуваті Нові тіпі, як через typedef, так и через описание других структур або класів. Для доступу до таких тіпів поза структурою або класу, до імені типу додається имя Структури и две двокрапкі: struct S {typedef int ** T; T x;}; S :: T у;
Переваги мови C ++
а) Швідкодія. ШВИДКІСТЬ роботи програм на С ++: практичніше не поступається програмам на С, хоча програмісті отримавших в свои руки Нові возможности и Нові засоби.
б) Масштабованість. На мові C ++ Розробляють програми для найрізноманітнішіх платформ и систем.
в) Можлівість роботи на низьких Рівні з пам'яттю, адресами, портами. (Що, при необережному вікорістанні, может легко превратиться на недолік.)
г) Можлівість создания узагальненіх алгоритмів lt; # justify gt; Недоліки мови C ++
а) Наявність безлічі можливіть, что порушують принципи тіпобезпекі приводити до того, что в С ++ програми может легко закрастися важковловіма помилка. Замість контролю з боці компілятора розробник вімушені Дотримуватись вельми нетрівіальніх правил кодування. За суті, ЦІ правила обмежують С ++ рамками якоїсь безпечнішої підмові. Більшість проблем тіпобезпекі С ++ успадкована від С, но Важлива роль в цьом пітанні грає и відмова автора мови від Ідеї використовуват Автоматичне управління пам'яттю (например, збірку сміття). Так візітною карткою С ++ стали вразлівості типом «переповнювання буфера».
б) Погана підтримка модульності. Підключення інтерфейсу зовнішнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно уповільнює компіляцію, при підключенні Великої кількості модулів. Для Усунення цього недоліку, много компіляторів реалізують Механізм прекомпіляціі заголовніх файлів (англ. Lt; # justify gt; C ++ успадкувала много проблем мови C:
а) Операція прісвоювання позначається як =, а операція порівняння як ==. Їх легко сплутаті, и така конструкція буде синтаксичними правильною, но приведе до важковломімого багу. Особливо часто це відбувається в операторах if и while, например, програміст может Написати if (i=0) вместо if (i == 0) (Разом з тім, основними маса компіляторів відає в таких випадка попередження.) Избежать ошибку такого типу можна, если писати всі операции порівняння у такому виде: if (0 == i). До того ж много мов (Бейсік, Паскаль) Використовують символ «=» самє в операціях порівняння.
б) Операції прісвоювання (=), інкрементації (++), декрементації (-) та інші повертаються значення. У поєднанні з великою кількістю операцій це дозволяє, альо НЕ зобов язує, програміста створюваті код, что Важко чітається. З Іншого боці, один з основних Принципів мов C и C ++ - дозволяті програмістові писати в будь-якому стилі, а не нав язувати «хороший» стиль. До того ж це іноді дозволяє компілятору створюваті оптімальнішій код.
в) Макрос (#define) є могутнім, но Небезпечна засобими. У мові C ++, На Відміну Від C, необходимость в небезпечних макросах з'являється значний рідше Завдяк шаблонами и вбудованим функціям. Альо в успадкованіх стандартних С-бібліотеках много потенційно небезпечних макросів.
Дехто считает недоліком мови C ++ відсутність системи Збірки сміття. З Іншого боці, в C ++ є достаточно ЗАСОБІВ (класи з конструкторами и деструкторами, Стандартні шаблони, передача параметрів за Ваші відповіді)...