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

C ++は汎用プログラミング言語です。もともとCの拡張として設計され、構文は似ていますが、現在は完全に異なる言語になっています。このタグは、C ++コンパイラでコンパイルされる(される)コードに関する質問に使用します。特定の標準リビジョン[C ++ 11]、[C ++ 14]、[C ++ 17]または[C ++ 20]などに関連する質問には、バージョン固有のタグを使用します。


8
int argc、char * argv []はどういう意味ですか?
多くのC ++ IDEとコンパイラでは、メイン関数を生成すると、次のようになります。 int main(int argc, char *argv[]) IDEなしでC ++をコーディングするとき、コマンドラインコンパイラーだけで、次のように入力します。 int main() パラメータなし。これはどういう意味ですか、それは私のプログラムに不可欠ですか?

11
名前なし/匿名の名前空間と静的関数
C ++の機能は、次のように名前のない(匿名の)名前空間を作成する機能です。 namespace { int cannotAccessOutsideThisFile() { ... } } // namespace そのような機能は役に立たないと思うでしょう-名前空間の名前を指定できないので、外部からその中の何かにアクセスすることは不可能です。ただし、これらの名前のない名前空間は、暗黙的なusing句があるかのように、それらが作成されたファイル内でアクセスできます。 私の質問は、静的関数を使用するよりも、なぜまたはいつこれが望ましいのでしょうか?または、それらは本質的にまったく同じことを行う2つの方法ですか?
508 c++  namespaces 

5
テンプレートのキーワード「typename」と「class」の違いは?
テンプレートについては、両方の宣言を見てきました。 template < typename T > template < class T > 違いは何ですか? そして、これらのキーワードは、次の例(テンプレートに関するドイツ語版ウィキペディアの記事から引用)で正確にどういう意味ですか? template < template < typename, typename > class Container, typename Type > class Example { Container< Type, std::allocator < Type > > baz; };
504 c++  templates  keyword 

23
どちらが速いか:スタック割り当てまたはヒープ割り当て
この質問はかなり初歩的に聞こえるかもしれませんが、これは私が一緒に働く別の開発者との議論でした。 ヒープに割り当てるのではなく、スタック割り当てに可能な限り注意を払いました。彼は私に話し、私の肩越しに見守っていて、彼らは同じパフォーマンスであるので、それは必要ではないとコメントしました。 スタックの増加は一定の時間であり、ヒープ割り当てのパフォーマンスは現在のヒープの複雑さ(適切なサイズのホールを見つける)と割り当て解除(ホールを縮小して断片化を減らす)の両方に依存するという印象を受けました。多くの標準ライブラリの実装では、私が間違っていない限り、削除中にこれを行うのに時間がかかります)。 これは、おそらくコンパイラに大きく依存するものとして私を襲います。特にこのプロジェクトでは、PPCアーキテクチャにMetrowerksコンパイラを使用しています。この組み合わせに関する洞察が最も役立ちますが、一般的に、GCCとMSVC ++の場合はどうなりますか?ヒープ割り当てはスタック割り当てよりもパフォーマンスが高くありませんか?違いはありませんか?または、違いが非常に小さいので、無意味なマイクロ最適化になります。
503 c++  performance  memory  stack  heap 

5
C ++標準では、初期化されていないブールがプログラムをクラッシュさせることを許可していますか?
C ++の「未定義の動作」により、コンパイラーが必要なことをほとんど実行できることがわかっています。しかし、コードが十分に安全であると思っていたので、驚いたクラッシュがありました。 この場合、実際の問題は、特定のコンパイラを使用する特定のプラットフォームでのみ、最適化が有効になっている場合にのみ発生しました。 問題を再現し、それを最大限に簡略化するために、いくつかのことを試みました。Serializeこれはと呼ばれる関数の抜粋です。これはboolパラメータを取り、文字列trueまたはfalse既存の宛先バッファにコピーします。 この関数はコードレビューに含まれますか?実際には、ブールパラメーターが初期化されていない値である場合にクラッシュする可能性があることを伝える方法はありませんか? // Zero-filled global buffer of 16 characters char destBuffer[16]; void Serialize(bool boolValue) { // Determine which string to print based on boolValue const char* whichString = boolValue ? "true" : "false"; // Compute the length of the string we selected const size_t len = strlen(whichString); …

27
クラスメンバー関数の存在のテンプレートチェック?
クラスで特定のメンバー関数が定義されているかどうかに応じて動作を変更するテンプレートを作成することは可能ですか? これが私が書きたいことの簡単な例です: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } したがって、定義されclass Tている場合はtoString()、それを使用します。そうでなければ、それはしません。方法がわからない魔法の部分は、「FUNCTION_EXISTS」部分です。



8
符号なし整数とsize_t
最近のCおよびC ++コードは、C文字列関数のパラメーターからSTLまで、ほとんどどこでも/のsize_t代わりに使用しているようです。この理由とそれがもたらす利点について知りたいです。intunsigned int
492 c++  c  size-t 


11
.soファイルにシンボルをリストする方法
.soファイルからエクスポートされるシンボルを一覧表示するにはどうすればよいですか?可能であれば、それらのソースも知りたいです(たとえば、静的ライブラリから取得した場合)。 違いがある場合は、gcc 4.0.2を使用しています。
486 c++  c  gcc  symbols  name-mangling 

9
ヘッダーファイルと.cppファイルがあるのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 C ++にヘッダーファイルと.cppファイルがあるのはなぜですか?
484 c++  header-files 

16
std :: stringをintに変換するにはどうすればよいですか?
簡単な質問をしてください。私はインターネットをかなり調べましたが、いくつかの解決策を見つけましたが、どれもまだ機能していません。文字列をintに変換することを見ていて、ASCIIコードを意味しているわけではありません。 簡単に説明すると、方程式に文字列として渡されます。それを分解し、正しくフォーマットし、線形方程式を解きます。さて、と言って、文字列をintに変換することはできません。 文字列が(-5)または(25)などの形式になることを知っているので、それは間違いなくintです。しかし、文字列からそれをどのように抽出しますか? 私が考えていた1つの方法は、文字列をfor / whileループで実行し、数字を確認し、その後にすべての数字を抽出してから、先頭に「-」があるかどうかを確認し、ある場合は、intを-倍します1。 ただし、このような小さな問題では少し複雑に見えます。何か案は?
484 c++  string  int 


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