r, wchar_t (char16_t і char32_t, в стандарті C + +11);
- цілочисельні знакові: signed char, short int, int, long int (і long long int, в стандарті C + +11);
цілочисельні беззнакові: unsigned char, unsigned short int, unsigned int, unsigned long int (і unsigned long long int, в стандарті C + +11);
з плаваючою крапкою: float, double, long double;
- логічний: bool, що має значення true і false. + + - надзвичайно потужний мова, що містить засоби створення ефективних програм практично будь-якого призначення, від низькорівневих утиліт і драйверів до складних програмних комплексів самого різного призначення. Перевагами С + + є:
підтримуються різні стилі та технології програмування, включаючи традиційне директивне програмування, ООП, узагальнене програмування, метапрограмування (шаблони, макроси);
передбачуване виконання програм є важливим достоїнством для побудови систем реального часу. Весь код, неявно генерований компілятором для реалізації мовних можливостей (наприклад, при перетворенні змінної до іншого типу), визначений у стандарті. Також строго визначені місця програми, в яких цей код виконується. Це дає можливість заміряти або розраховувати час реакції програми на зовнішню подію;
автоматичний виклик деструкторів об'єктів при їх знищенні, причому в порядку, зворотному викликом конструкторів. Це спрощує (досить оголосити змінну) і робить більш надійним звільнення ресурсів (пам'ять, файли, семафори і т. п.), а також дозволяє гарантовано виконувати переходи станів програми, не обов'язково пов'язані із звільненням ресурсів (наприклад, запис в журнал);
користувача функції-оператори дозволяють коротко і ємко записувати вирази над користувацькими типами у природному алгебраїчній формі;
мову підтримує поняття фізичної (const) і логічної (mutable) константності. Це робить програму надійніше, оскільки дозволяє компілятору, наприклад, діагностувати помилкові спроби зміни значення змінної [9]. Оголошення константності дає програмісту, що читає текст програми додаткове уявлення про правильне використання класів і функцій, а також може бути підказкою для оптимізації. Перевантаження функцій-членів за ознакою константності дозволяє визначати зсередини об'єкта мету виклику методу (константних для читання, неконстантний для зміни). Оголошення mutable дозволяє зберігати логічну константність при використанні кешей і ледачих обчислень;
використовуючи шаблони, можливо створювати узагальнені контейнери і алгоритми для різних типів даних, а також спеціалізувати і обчислювати на етапі компіляції;
можливість імітації розширення мови для підтримки парадигм, які не підтримуються компіляторами безпосередньо. Наприклад, бібліотека Boost.Bind дозволяє пов'язувати аргументи функцій;
можливість створення вбудованих предметно-орієнтованих мов програмування. Такий підхід використовує, наприклад бібліотека Boost.Spirit, що дозволяє задавати EBNF-граматику парсерів прямо в коді C + +;
використовуючи шаблони і множинне спадкування можна імітувати класи-домішки і комбінаторну параметризацію бібліотек. Такий підхід застосовано в бібліотеці Loki, клас SmartPtr якої дозволяє, керуючи всього декількома параметрами часу компіляції, зген...