問題タブ [c++-faq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - basic_ios のフラグのセマンティクス
rdstate()
、、、、およびフラグgood()
が 、bad()
、およびでどのように表現されているかに、eof()
私は繰り返し困惑しています。fail()
basic_ios::operator!
operator bool
operator void*
誰かが私を悲惨な状態から解放し、これを説明してくれませんか?
c++ - 初期化されていない変数を出力すると、奇妙な値が表示されるのはなぜですか?
次のコードでは、変数に初期値がなく、この変数を出力しました。
出力: 2514932
出力: 1.23769e-307
これらの出力数値がわかりません。誰でもこれを説明できますか?
c++ - std::list::remove メソッドは、削除された各要素のデストラクタを呼び出しますか?
私はコードを持っています:
std::list::remove
メソッドは、削除された各要素のデストラクタ (およびメモリの解放) を呼び出しますか? もしそうなら、どうすればそれを避けることができますか?
c++ - 演算子のオーバーロードの基本的なルールとイディオムは何ですか?
注: 回答は特定の順序で提供されていますが、多くのユーザーは、回答が提供された時間ではなく、投票に従って回答を並べ替えるため、最も意味のある順序で回答のインデックスを次に示します。
- C++ での演算子のオーバーロードの一般的な構文
- C++ での演算子オーバーロードの 3 つの基本ルール
- 会員と非会員の間の決定
- オーバーロードする一般的な演算子
- 代入演算子
- 入出力演算子
- 関数呼び出し演算子
- 比較演算子
- 算術演算子
- 配列添字
- ポインターのような型の演算子
- 変換演算子
- new と delete のオーバーロード
(注: これはStack Overflow の C++ FAQへのエントリであることを意図しています。このフォームで FAQ を提供するという考えを批判したい場合は、すべての始まりとなった meta への投稿がそれを行う場所になります。回答への回答その質問は、FAQ のアイデアが最初に始まったC++ チャットルームで監視されているため、アイデアを思いついた人にあなたの回答が読まれる可能性が非常に高くなります。)
c++ - 未定義の動作とシーケンスポイントがリロードされました
このトピックを次のトピックの続編と考えてください。
前の記事
未定義の動作とシーケンスポイント
この面白くて複雑な表現をもう一度見てみましょう(斜体のフレーズは上記のトピック* smile *から取られています):
これは未定義動作を引き起こすと言います。これを言うとき、私たちは暗黙のうちにタイプが組み込みタイプの1つであると仮定していると思います。i
タイプi
がユーザー定義タイプの場合はどうなりますか?そのタイプは、この投稿の後半で定義されていると言いますIndex
(以下を参照)。それでも未定義動作を呼び出しますか?
はいの場合、なぜですか?それは書くことと同等ではありませんi.operator+=(i.operator++());
か、あるいは構文的に単純 i.add(i.inc());
ですか?または、それらも未定義動作を呼び出しますか?
いいえの場合、なぜですか?結局のところ、オブジェクトは連続するシーケンスポイント間で2回i
変更されます。経験則を思い出してください。式は、連続する「シーケンスポイント間でオブジェクトの値を1回だけ変更できます。また、 が式の場合、undefined-behaviorを呼び出す必要があります。その場合、同等のもので あり、undefined-behaviorを呼び出す必要があります。真実ではないようです!(私が理解している限り)i += ++i
i.operator+=(i.operator++());
i.add(i.inc());
または、そもそも表現i += ++i
ではないですか?もしそうなら、それは何ですか、そして表現の定義は何ですか?
それが式であると同時に、その動作も明確に定義されている場合、式に関連付けられているシーケンスポイントの数は、式に含まれるオペランドのタイプに何らかの形で依存することを意味します。私は(部分的にでも)正しいですか?
ちなみに、この表現はどうですか?
応答でもこれを考慮する必要があります(その動作を確実に知っている場合)。:-)
は
C ++ 03で明確に定義されていますか?結局のところ、これはこれです、
c++ - このポインタを介してテンプレートの基本クラスのメンバーにアクセスする必要があるのはなぜですか?
以下のクラスがテンプレートでない場合は、クラスに含めることができx
ますderived
。ただし、以下のコードでは、を使用する必要がありますthis->x
。なんで?
c++ - C++ で配列を使用するにはどうすればよいですか?
C++ は C から配列を継承し、事実上あらゆる場所で使用されています。C++ は、使いやすく、エラーが発生しにくい ( std::vector<T>
C++98std::array<T, n>
以降およびC++11以降) 抽象化を提供するため、配列の必要性は C ほど頻繁には発生しません。コードを作成したり、C で記述されたライブラリを操作したりする場合は、配列がどのように機能するかをしっかりと把握する必要があります。
この FAQ は 5 つの部分に分かれています。
この FAQ に何か重要な情報が欠けていると思われる場合は、回答を作成し、追加部分としてここにリンクしてください。
以下のテキストでは、「配列」は「C 配列」を意味し、クラス テンプレートではありませんstd::array
。C 宣言子の構文に関する基本的な知識があることを前提としています。new
以下に示すようにとを手動で使用するdelete
ことは、例外に直面すると非常に危険であることに注意してください。ただし、それは別の FAQのトピックです。
(注: これはStack Overflow の C++ FAQへのエントリであることを意図しています。FAQ をこのフォームで提供するという考えを批判したい場合は、すべての始まりとなった meta への投稿がそれを行う場所になります。回答への回答その質問は、FAQ のアイデアが最初に始まったC++ チャットルームで監視されているため、アイデアを思いついた人にあなたの回答が読まれる可能性が非常に高くなります。)
c++ - C++ でクラスのメンバーを参照するためにドット、矢印、または二重コロンを使用するのはいつですか?
他の C 派生言語 (Java や C# など) から C++ に移行すると、C++ にはクラスのメンバーを参照する 3 つの方法a::b
( 、a.b
、および) があることに最初は非常に混乱しますa->b
。これらの演算子のどれをいつ使用しますか?
c++ - C++11 の右辺値とムーブ セマンティクスの混乱 (return ステートメント)
C++ 11 の右辺値参照と移動セマンティクスを理解しようとしています。
これらの例の違いは何ですか? また、ベクトル コピーを実行しないのはどれですか?
最初の例
2 番目の例
3 番目の例
c++ - どのような C++ スマート ポインターの実装が利用可能ですか?
比較、長所、短所、およびいつ使用するか?
これはガベージ コレクション スレッドから派生したもので、単純な答えだと思っていたものが、特定のスマート ポインターの実装に関する多くのコメントを生成したため、新しい投稿を開始する価値があるように思われました。
最終的に問題となるのは、C++ でのスマート ポインターのさまざまな実装と、それらをどのように比較するかということです。単純な長所と短所、または例外と、そうでなければうまくいくと思われるものへの落とし穴です。
私が使用した、または少なくとも大まかに説明して、以下の回答として使用することを検討したいくつかの実装と、100%正確ではない可能性があるそれらの相違点と類似点の理解を投稿しました。
目標は、いくつかの新しいオブジェクトとライブラリについて学習するか、すでに広く使用されている既存の実装の使用法と理解を修正し、他の人にとって適切なリファレンスになることです。