名前空間
変種
操作

ゼロオーバーヘッドの原則

From cppreference.com
< cpp‎ | language
 
 
C++言語
全般
フロー制御
条件実行文
if
繰り返し文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ式
inline指定子
動的例外仕様 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点数
文字 - 文字列 - nullptr (C++11)
ユーザー定義 (C++11)
ユーティリティ
属性 (C++11)
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス固有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
 

ゼロオーバーヘッドの原則は、C++の設計原則であり、次のように述べています。

  1. 使わないものにはコストを払わない。
  2. 使うものは、手書きで合理的に書けるものと同じくらい効率的である。

一般に、これは、プログラマがその機能を使わずに導入するよりも大きな、時間または空間のオーバーヘッドを課すような機能は、C++に追加されるべきではないことを意味します。

ゼロオーバーヘッドの原則に従わない言語の機能は、実行時型識別例外の2つだけであり、ほとんどのコンパイラがそれらをオフにするスイッチを含んでいるのはそのためです。

[編集] 外部リンク

1.  Foundations of C++ - Bjarne Stroustrup
2.  C++ exceptions and alternatives - Bjarne Stroustrup
3.  De-fragmenting C++ - 例外RTTIをより手頃で使いやすくする - Herb Sutter
4.  Bjarne Stroustrup: C++ on Artificial Intelligence (AI) Podcast
English 日本語 中文(简体) 中文(繁體)