Namespaces
Variants

Zero-overhead principle

From cppreference.net
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
constexpr (C++11)
consteval (C++20)
constinit (C++20)
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

Das zero-overhead principle ist ein C++-Designprinzip, das besagt:

  1. Sie zahlen nicht für das, was Sie nicht verwenden.
  2. Was Sie verwenden, ist genauso effizient wie das, was Sie vernünftigerweise von Hand schreiben könnten.

Im Allgemeinen bedeutet dies, dass C++ keine Funktion hinzugefügt werden sollte, die einen höheren Aufwand verursacht, sei es in Zeit oder Speicher, als ein Programmierer ohne Verwendung dieser Funktion einführen würde.

Die einzigen beiden Sprachmerkmale, die nicht dem Zero-Overhead-Prinzip folgen, sind Runtime Type Identification und Exceptions , weshalb die meisten Compiler eine Option enthalten, um sie abzuschalten.

Externe Links

1. Grundlagen von C++ - Bjarne Stroustrup
2. C++-Ausnahmen und Alternativen - Bjarne Stroustrup
3. Defragmentierung von C++ - Ausnahmen und RTTI Erschwinglicher und Nutzbarer Machen - Herb Sutter
4. Bjarne Stroustrup: C++ im Artificial Intelligence (AI) Podcast