問題タブ [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++ - const int *、const int * const、およびint const *の違いは何ですか?
const int*
私はいつも、、、const int * const
そしてint const *
正しく使用する方法を台無しにします。できることとできないことを定義する一連のルールはありますか?
割り当て、関数への受け渡しなどに関して、すべてのすべきこととすべきでないことを知りたいです。
c++ - 派生テンプレート クラスがベース テンプレート クラスの識別子にアクセスできないのはなぜですか?
検討:
これを GCC g++ 3.4.4 (cygwin) でコンパイルできません。
これらをクラス テンプレートに変換する前は、それらは非ジェネリックであり、派生クラスは基本クラスの静的メンバーを参照できました。この可視性の喪失は C++ 仕様の要件ですか、それとも構文を変更する必要がありますか?
Base<T>
の各インスタンス化には独自の静的メンバー " ZEROFILL
" と " NO_ZEROFILL
" がBase<float>::ZEROFILL
あり、それは異なる変数であることは理解していますがBase<double>::ZEROFILL
、あまり気にしません。定数は、コードを読みやすくするためにあります。マクロやグローバルよりも名前の競合に関して安全であるため、静的定数を使用したかったのです。
c++ - コンストラクターの初期化リストの評価順序
いくつかの引数を取るコンストラクターがあります。リストされた順序で構築されていると想定していましたが、あるケースでは、逆に構築されて中断されたようです。引数を逆にすると、プログラムは中止を停止しました。これは私が使用している構文の例です。問題は、この場合、a_ を b_ の前に初期化する必要があるということです。工事の順番は保証できますか?
例えば
c++ - C++でbool/failを使用して文字列をintに変換します
std::string
文字列または値(など)の可能性があるaがあります0
。
失敗する機能を備えたstd::string
に変換するための最良または最も簡単な方法は何ですか?int
C#のC++バージョンが必要ですInt32.TryParse
。
c++ - 外部リンケージと内部リンケージとは何ですか?
外部リンケージと内部リンケージとその違いを理解したい。
の意味も知りたい
const
変数は、特に宣言されていない限り、デフォルトで内部的にリンクされますextern
。
c - 定義と宣言の違いは何ですか?
両方の意味がわかりません。
c++ - 「名前空間stdを使用する」のはなぜですか。悪い習慣だと思いますか?
私は他の人から、コードを書くのは間違っているので、代わりに直接using namespace std;
使うべきだと言われました。std::cout
std::cin
なぜusing namespace std;
悪い習慣と見なされるのですか?それは非効率的ですか、それともあいまいな変数(std
名前空間の関数と同じ名前を共有する変数)を宣言するリスクがありますか?パフォーマンスに影響しますか?
c++ - 特定メンバーのテンプレート特化?
テンプレート クラスの特定のメンバーを特殊化することは可能ですか? 何かのようなもの:
もちろん、このコードは無効です。
c++ - どのiomanipマニピュレータが「スティッキー」ですか?
最近、明示的に変更するまで、挿入ごとに文字列ストリームに影響を与えるstringstream
と誤って想定していたため、作成に問題がありました。std::setw()
ただし、挿入後は常に設定が解除されます。
だから、私はいくつかの質問があります:
- なぜ
setw()
このようになっているのですか? - この方法で他のマニピュレータはありますか?
- との動作に違いは
std::ios_base::width()
ありstd::setw()
ますか? - 最後に、この動作を明確に文書化したオンラインリファレンスはありますか?私のベンダーのドキュメント(MS Visual Studio 2005)は、これを明確に示していないようです。
c++ - 非 const 参照が一時オブジェクトにバインドできないのはなぜですか?
getx()
関数が返す一時オブジェクトへの非 const 参照を取得できないのはなぜですか? 明らかに、これは C++ 標準で禁止されていますが、標準への参照ではなく、そのような制限の目的に興味があります。
- オブジェクトへの定数参照はC++ 標準で禁止されていないため、オブジェクトの有効期間が原因ではないことは明らかです。
- 非定数関数の呼び出しが許可されているため、上記のサンプルでは一時オブジェクトが定数でないことは明らかです。たとえば
ref()
、一時オブジェクトを変更できます。 - さらに
ref()
、コンパイラをだましてこの一時オブジェクトへのリンクを取得できるようにすることで、問題を解決できます。
加えて:
彼らは、「一時オブジェクトをconst参照に割り当てると、このオブジェクトの寿命が延びる」と「非const参照については何も言われていない」と言います。私の追加の質問です。次の割り当ては、一時オブジェクトの有効期間を延長しますか?