非推奨機能のコンパイルの際に警告するかしないかを指定するスイッチを用意しておくべきです。同じモジュールのクラス/関数のみが参照できることを示します。メンバをオーバーライドすることはできません。アクセスは許可するようにprivateを拡張したものです。内側のパッケージについてのみ適用されます。参照できることを示します。オブジェクトに属するメンバについてのみ、アクセスが可能です。するコードは不正です。同じ実行ファイル中の全てのコードからアクセス可能なことを示します。実行ファイルの外からもアクセスできることを示します。保護属性は名前の探索の際には考慮されません。保護属性によるとどちらかがアクセス不可能な場合であっても、曖昧でエラーとなります。コンパイル時に評価できる定数につける属性です。ないグローバル宣言はスレッドローカル記憶域に配置されます。属性が付いているときは全スレッド間で共有されるようになります。全スレッドで共有される。メンバ変数やローカル変数にも適用可能です。スレッドローカルではなく全スレッドで共有される変数となります。スレッド間競合や動機の問題に関する安全を何も提供しません。プログラマの責任です。セーフモードでは使用できません。コンパイルエラーとなります。実行時エラーにするのではなくコンパイルエラーにできます。仮想関数に適用する属性です。いう状況などに便利です。属性は関数もしくはデータに適用されます。ある型に関するものである、という意味になります。参照しない、ということです。その他の宣言についた場合は無視されます。Fooのインスタンスが無い。7を返す仮想関数はstaticにはできません。プログラム中に唯一つ保持されます。Dのstatic属性は、Cのような"ファイルローカル"という別の意味は持ちません。型推論を行いたいときに使用します。属性は、ローカル変数とクラスの宣言に使用できます。実装するために活用できます。自動的に呼び出されます。デストラクタが呼ばれます。何らかの後処理を確実に実行することが保証できます。変数が構築されたのと逆順で実行されます。パラメータには適用できません。返値も禁止されています。初期化以外の代入も禁じられています。もっともな理由が見つかれば将来的には緩和されるかもしれません。属性abstractなクラスは、直接インスタンス化することができません。ないクラスの基底クラスとしてのみインスタンス化できます。abstractになります。非仮想関数をabstractと宣言することはできません。宣言された関数であっても、関数定義本体を書くことができます。提供できるようにするためです。