Zero-overhead principle
From cppreference.net
C++
C++ language
| General topics | ||||||||||||||||
| Flow control | ||||||||||||||||
| Conditional execution statements | ||||||||||||||||
| Iteration statements (loops) | ||||||||||||||||
|
||||||||||||||||
| Jump statements | ||||||||||||||||
| Functions | ||||||||||||||||
| Function declaration | ||||||||||||||||
| Lambda function expression | ||||||||||||||||
inline
specifier
|
||||||||||||||||
| Dynamic exception specifications ( until C++17* ) | ||||||||||||||||
noexcept
specifier
(C++11)
|
||||||||||||||||
| Exceptions | ||||||||||||||||
| Namespaces | ||||||||||||||||
| Types | ||||||||||||||||
| Specifiers | ||||||||||||||||
|
||||||||||||||||
| Storage duration specifiers | ||||||||||||||||
| Initialization | ||||||||||||||||
| Expressions | ||||||||||||||||
| Alternative representations | ||||||||||||||||
| Literals | ||||||||||||||||
| Boolean - Integer - Floating-point | ||||||||||||||||
| Character - String - nullptr (C++11) | ||||||||||||||||
| User-defined (C++11) | ||||||||||||||||
| Utilities | ||||||||||||||||
| Attributes (C++11) | ||||||||||||||||
| Types | ||||||||||||||||
typedef
declaration
|
||||||||||||||||
| Type alias declaration (C++11) | ||||||||||||||||
| Casts | ||||||||||||||||
| Memory allocation | ||||||||||||||||
| Classes | ||||||||||||||||
| Class-specific function properties | ||||||||||||||||
|
||||||||||||||||
| Special member functions | ||||||||||||||||
|
||||||||||||||||
| Templates | ||||||||||||||||
| Miscellaneous | ||||||||||||||||
Le principe de coût nul est un principe de conception C++ qui stipule :
- Vous ne payez pas pour ce que vous n'utilisez pas.
- Ce que vous utilisez est tout aussi efficace que ce que vous pourriez raisonnablement écrire à la main.
En général, cela signifie qu'aucune fonctionnalité ne devrait être ajoutée à C++ qui imposerait une surcharge, qu'elle soit temporelle ou spatiale, supérieure à ce qu'un programmeur introduirait sans utiliser cette fonctionnalité.
Les deux seules fonctionnalités du langage qui ne respectent pas le principe du coût nul sont runtime type identification et exceptions , ce qui explique pourquoi la plupart des compilateurs incluent une option pour les désactiver.
Liens externes
| 1. | Fondations du C++ - Bjarne Stroustrup |
| 2. | Exceptions C++ et alternatives - Bjarne Stroustrup |
| 3. | Défragmentation du C++ - Rendre les Exceptions et le RTTI Plus Accessibles et Utilisables - Herb Sutter |
| 4. | Bjarne Stroustrup : C++ sur le Podcast d'Intelligence Artificielle (IA) |