タグ付けされた質問 「c++-faq」

共同編集されたコミュニティ編集のC ++ FAQを提供します

16
C ++参照変数を返す習慣は悪ですか?
これは少し主観的なものだと思います。意見が全会一致になるかどうかはわかりません(参照が返されるコードスニペットをたくさん見ました)。 この質問に対するコメントによると、参照の初期化に関して、参照を返すことは悪いことです。なぜなら、[理解しているように]参照を削除するのを忘れやすく、メモリリークにつながる可能性があるためです。 これは、私が例を考えて(私が物事を想像しているのでない限り)、かなりの数の場所でこれを行ったので心配です...誤解していませんか?悪か?もしそうなら、どれだけ悪か? ポインターと参照の混合バッグと、C ++を初めて使用するという事実、および何をいつ使用するかについての完全な混乱のため、アプリケーションはメモリリークの地獄である必要があると思います... また、メモリリークを回避する最良の方法として、スマート/共有ポインターの使用が一般的に受け入れられていることも理解しています。
341 c++  reference  c++-faq 

9
外部連携と内部連携とは?
外部連携と内部連携の違いを知りたい。 の意味も知りたい constとして宣言されていない限り、変数はデフォルトで内部的にリンクしますextern。
337 c++  c++-faq 

2
現代のC ++でクラシックな並べ替えアルゴリズムを実装する方法は?
std::sortアルゴリズム(そのいとこstd::partial_sortとstd::nth_elementC ++標準ライブラリからの)は、ほとんどの実装である複数の基本ソートアルゴリズムの複雑ハイブリッド融合そのような選択ソート、挿入ソート、クイックソート、マージソート、又はヒープソートなど、。 ここやhttps://codereview.stackexchange.com/などの姉妹サイトには、これらの古典的なソートアルゴリズムの実装のバグ、複雑さ、およびその他の側面に関する多くの質問があります。提供されている実装のほとんどは、生のループで構成され、インデックス操作と具象型を使用しており、正確性と効率性の観点から分析することは一般的に重要です。 質問:上記の古典的な並べ替えアルゴリズムは、最新のC ++を使用してどのように実装できますか? 生のループはありませんが、標準ライブラリのアルゴリズム構築ブロックを組み合わせて<algorithm> イテレータインターフェイスと、インデックス操作や具象型の代わりにテンプレートを使用 完全な標準ライブラリを含むC ++ 14スタイル、autoおよび、テンプレートエイリアス、透過的なコンパレータ、ポリモーフィックラムダなどの構文ノイズリデューサー。 注: ソートアルゴリズムの実装の詳細については、Wikipedia、Rosetta Code、またはhttp://www.sorting-algorithms.com/を参照してください。 ショーン親の規則(スライド39)、生のループであるforオペレータと長い2つの関数の組成より-loop。そうf(g(x));か、f(x); g(x);あるいはf(x) + g(x);生のループではありません、そしてどちらのループしているselection_sortとinsertion_sort以下。 私はスコットマイヤーズの用語に従い、現在のC ++ 1yをすでにC ++ 14として示し、C ++ 98とC ++ 03の両方をC ++ 98として示しています。 @Mehrdadのコメントで示唆されているように、回答の最後にライブ例として4つの実装を提供します。C++ 14、C ++ 11、C ++ 98、BoostおよびC ++ 98です。 答え自体はC ++ 14に関してのみ示されています。必要に応じて、さまざまな言語バージョンが異なる構文とライブラリの違いを示します。


20
コンパイラの警告を常に有効にする必要があるのはなぜですか?
CおよびC ++プログラムをコンパイルするとき、「コンパイラの警告を常に有効にする」必要があるとよく耳にします。なぜこれが必要なのですか?それ、どうやったら出来るの? 「警告をエラーとして扱う」べきだとも時々聞いています。したほうがいい?それ、どうやったら出来るの?




3
コンストラクタの初期化リストの評価順序
いくつかの引数を取るコンストラクターがあります。リストされた順序で構築されていると想定していましたが、逆に構築されているために中止されたようです。引数を逆にすると、プログラムは異常終了しました。これは私が使用している構文の例です。この場合、a_はb_の前に初期化する必要があります。施工順序は保証できますか? 例えば class A { public: A(OtherClass o, string x, int y) : a_(o), b_(a_, x, y) { } OtherClass a_; AnotherClass b_; };
252 c++  gcc  c++-faq 

7
C ++でオブジェクトを関数に渡す方法は?
C ++プログラミングは初めてですが、Javaの経験があります。C ++で関数にオブジェクトを渡す方法に関するガイダンスが必要です。 ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?オブジェクトへの参照を保持する変数のみを渡すため、Javaではそのような問題はありません。 これらの各オプションをどこで使用するかについても説明していただければ幸いです。

4
ドット、矢印、またはダブルコロンを使用してC ++のクラスのメンバーを参照するのはいつですか?
:C ++に(JavaやC#のような)他のC由来の言語から来て、それは非常にC ++クラスのメンバを参照する3つの方法を持っていることを混同最初にありa::b、a.bおよびa->b。これらの演算子のどれをいつ使用しますか? (注:これは、Stack OverflowのC ++ FAQへのエントリになることを意図しています。このフォームでFAQを提供するという考えを批評したい場合は、これをすべて開始したメタへの投稿がそのための場所になります。回答その質問はC ++チャットルームで監視され、FAQのアイデアはそもそも始まったので、アイデアを思いついた人があなたの答えを読む可能性が非常に高くなります。
243 c++  c++-faq 

14
クラスデータメンバー“ :: *”へのポインター
私はうまくコンパイルするこの奇妙なコードスニペットに出くわしました: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } なぜ C ++には、クラスの非静的データメンバーへのこのポインターがあるのですか?実際のコードでこの奇妙なポインターの使用は何ですか?
242 c++  class  pointers  c++-faq 

1
std :: launderの目的は何ですか?
P0137は、関数テンプレートstd::launderを導入し、 共用体、存続時間、およびポインターに関するセクションで標準に多くの多くの変更を加えます。 このペーパーが解決している問題は何ですか?私が認識しなければならない言語の変更は何ですか?そして、私たちは何をしているのlaunderですか?

19
同様のconstメンバー関数と非constメンバー関数の間のコードの重複を削除するにはどうすればよいですか?
class X内部メンバーにアクセスを戻したい場所が次のようになっているとします。 class Z { // details }; class X { std::vector<Z> vecZ; public: Z& Z(size_t index) { // massive amounts of code for validating index Z& ret = vecZ[index]; // even more code for determining that the Z instance // at index is *exactly* the right sort of Z …

3
「* thisの右辺値参照」とは何ですか?
clangのC ++ 11ステータスページで「* thisの右辺値参照」と呼ばれる提案に出くわしました。 私は右辺値参照についてかなり読んで理解しましたが、私はこれについて知っているとは思いません。また、この用語を使用しても、ウェブ上で多くのリソースを見つけることができませんでした。 ページに提案書へのリンクがあります:N2439(移動のセマンティクスを* thisに拡張しています)が、そこから多くの例を取得していません。 この機能については何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.