[解決済み] C++11で非推奨となるC++イディオムは?
2022-04-25 12:53:14
質問
新しい規格では、新しいやり方があり、多くは古いやり方よりすっきりしていますが、古いやり方でも問題ありません。 また、後方互換性の理由から、新しい規格は公式にはあまり非推奨でないことも明らかです。 そこで、残る疑問があります。
C++11のスタイルより確実に劣っている古いコーディング方法と、その代わりに今できることは何でしょうか?
回答にあたっては、quot;use auto variables"のような明白なものは飛ばしてもかまいません。
解決方法は?
-
最終クラス
: C++11では
final
指定子により、クラスの派生を防ぐことができます。 - C++11のラムダは、名前付き関数オブジェクト(ファンクタ)クラスの必要性を大幅に削減します。
-
移動コンストラクタ
: の魔法のような方法
std::auto_ptr
が動作することは、rvalue 参照のファーストクラスのサポートにより、もはや必要ありません。 - 安全なブール : これは先に述べたとおりです。C++11の明示的な演算子は、この非常に一般的なC++03のイディオムを回避することができます。
-
フィットするように縮小
: 多くのC++11 STLコンテナでは、STLを使用するために
shrink_to_fit()
メンバ関数を使用することで、テンポラリとのスワップが不要になるはずです。 - 一時的な基底クラス : 古いC++ライブラリの中には、このかなり複雑なイディオムを使っているものがあります。ムーブセマンティクスでは、もはや必要ありません。
- タイプセーフ列挙型 C++11では、列挙は非常に安全です。
-
ヒープ割り当ての禁止
: を使用することができます。
= delete
構文は、特定の機能が明示的に拒否されていることを示す、より直接的な方法です。これは、ヒープ割り当ての禁止に適用できます(つまり。=delete
メンバーに対してoperator new
) 、コピー、割り当てなどを防止する。 - テンプレート化されたtypedef : エイリアス テンプレート C++11 では、単純なテンプレート化された型定義は必要なくなる。しかし、複雑な型生成器には、依然としてメタ関数が必要である。
- フィボナッチなどの一部の数値コンパイル時計算は 一般化された定数式
-
result_of
: クラステンプレートの使用例result_of
に置き換える必要があります。decltype
. 私が思うにresult_of
用途decltype
が利用可能な場合。 - クラス内メンバ初期化子 デフォルト値を持つ非静的メンバのデフォルト初期化のためのタイピングを保存します。
-
新しいC++11のコードでは
NULL
は、次のように再定義する必要があります。nullptr
を参照してください。 STLの話 その理由は、"SONY "が "SONY "を否定した理由をご覧ください。 - 表現テンプレート マニアにはたまらない トレーリングリターン型 C++11の関数構文で、30行の長い戻り値の型はもう必要ありません!
この辺で止めておこうと思います!
関連
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] C++のPOD型とは何ですか?
-
[解決済み] C++の識別子でアンダースコアを使用する場合のルールについて教えてください。
-
[解決済み] const std::string & をパラメータとして渡す時代は終わったのでしょうか?
-
[解決済み】C++17の新機能は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない