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

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

10
「サンク」とは何ですか?
私はそれがプログラミング(特にC ++ドメイン)で使用されているのを見てきましたが、それが何であるかはわかりません。多分それはデザインパターンですが、私は間違っているかもしれません。誰もがサンクの良い例を挙げられますか?
130 c++  thunk 

10
C ++ 11でのスレッドプーリング
関連する質問: C ++ 11について: C ++ 11:std :: thread pooled? C ++ 11のasync(launch :: async)は、高価なスレッドの作成を回避するためにスレッドプールを廃止しますか? ブーストについて: スレッドを再利用するC ++ブーストスレッド boost :: threadとそれらのプールの作成! タスクを何度も作成したり削除したりせずに、タスクをに送信するスレッドのプールを取得するにはどうすればよいですか?これは、結合せずに再同期する永続的なスレッドを意味します。 次のようなコードがあります。 namespace { std::vector<std::thread> workers; int total = 4; int arr[4] = {0}; void each_thread_does(int i) { arr[i] += 2; } } int main(int argc, char *argv[]) { …

2
std :: vectorの初期サイズを設定するには?
私は持っていてvector<CustomClass*>、ベクターに多くのアイテムを入れており、高速アクセスが必要なので、リストを使用しません。ベクトルの初期サイズを設定する方法(たとえば、20 000桁にして、新しく挿入するときにコピーされないようにする)
130 c++  stl 

10
C ++でポインターへの参照を渡す
私の知る限り、C ++でポインターへの参照を渡すことを許可してはならない理由はありません。しかし、私の試みは失敗しており、その理由はわかりません。 これは私がやっていることです: void myfunc(string*& val) { // Do stuff to the string pointer } // sometime later { // ... string s; myfunc(&s); // ... } そして私はこのエラーを得ています: パラメータ1を 'std :: string *'から 'std :: string *&'に変換できません
130 c++  pointers  reference 

5
マルチスレッドでvolatileを使用するのはいつですか?
グローバル変数にアクセスするスレッドが2つある場合、多くのチュートリアルでは、変数を揮発性にして、コンパイラーが変数をレジスターにキャッシュしないようにし、正しく更新されないようにします。ただし、共有変数にアクセスする2つのスレッドは、ミューテックスを介して保護を要求するものではありませんか。しかし、その場合、スレッドのロックとミューテックスの解放の間に、コードはその1つのスレッドだけが変数にアクセスできるクリティカルセクションにあります。この場合、変数は揮発性である必要はありませんか? したがって、マルチスレッドプログラムでのvolatileの使用/目的は何ですか?



11
GDBにブレークポイントのリストを保存させる
OK、info breakはブレークポイントをリストしますが、この質問のように --command を使用してそれらを再利用するのに適切に機能するフォーマットではありません。GDBには、それらを再び入力可能なファイルにダンプする方法がありますか?デバッグセッションでは、テスト用のブレークポイントのセットを構築した後、GDBを再起動する必要がある場合があります。 .gdbinitファイルには--commandと同じ問題があります。インフォブレークコマンドではなく、人間の消費のためのテーブルをコマンドを一覧表示するのではなく。 詳しく説明すると、次はinfo breakのサンプルです。 (gdb)情報ブレーク Num Type Disp Enb Address What 1ブレークポイントでy 0x08048517を維持<foo :: bar(void)+7>
129 c++  c  debugging  gdb  breakpoints 

7
C ++でのポリモーフィズム
私の知る限り: C ++には、3つの異なるタイプのポリモーフィズムがあります。 仮想機能 関数名のオーバーロード オペレーターの過負荷 上記の3つのタイプの多型に加えて、他の種類の多型が存在します。 ランタイム コンパイル時 アドホックポリモーフィズム パラメトリック多態性 実行時のポリモーフィズムは仮想関数によって実現でき 、静的なポリモーフィズムはテンプレート関数によって実現できることを知っています しかし、他の2つについては アドホックポリモーフィズム ウェブサイトが言うパラメトリック多態性、 アドホックなポリモーフィズム: 使用できる実際のタイプの範囲が有限であり、使用前に組み合わせを個別に指定する必要がある場合、これはアドホックなポリモーフィズムと呼ばれます。 パラメトリック多態性: すべてのコードが特定の型について言及せずに記述されているため、任意の数の新しい型で透過的に使用できる場合、パラメトリックポリモーフィズムと呼ばれます。 私はそれらをほとんど理解できません:( 可能であれば、誰もが例でそれらの両方を説明できますか?この質問に対する回答が、大学の多くの新入生のために役立つことを願っています。

5
メンバーアクセス演算子のオーバーロード->、。*
私は、メンバーアクセス演算子を除いて、ほとんどの演算子のオーバーロードを理解し->、.*、->*など 特に、これらの演算子関数に渡されるものと返されるものは何ですか? 演算子関数(例operator->(...))は、どのメンバーが参照されているかをどのようにして知るのですか?わかる?それも知る必要がありますか? 最後に、考慮に入れる必要があるconstの考慮事項はありますか?たとえば、のようなものをオーバーロードする場合operator[]、通常、constバージョンとnon-constバージョンの両方が必要になります。メンバーアクセスオペレーターにはconstバージョンとnon-constバージョンが必要ですか?

6
GCCを使用するx86で整数オーバーフローが無限ループを引き起こすのはなぜですか?
次のコードは、GCCの無限ループに入ります。 #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } だからここでの取り決めです:符号付き整数オーバーフローは技術的に未定義の動作です。しかし、x86上のGCCは、オーバーフローでラップするx86整数命令を使用して整数演算を実装します。 したがって、未定義の動作であるにもかかわらず、オーバーフローでラップすることを期待していました。しかし、明らかにそうではありません。それで私は何を逃したのですか? 私はこれを使ってこれをコンパイルしました: ~/Desktop$ g++ main.cpp -O2 GCC出力: ~/Desktop$ ./a.out 536870912 1073741824 …
129 c++  c  gcc  x86  undefined-behavior 

6
std :: shared_ptr <void>が機能する理由
シャットダウン時にstd :: shared_ptrを使用して任意のクリーンアップを実行するコードを見つけました。最初はこのコードは機能しないと思っていましたが、次のことを試しました。 #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; "Test destroyed" &lt;&lt; std::endl; } }; int main() { std::cout &lt;&lt; "At begin of main.\ncreating std::vector&lt;std::shared_ptr&lt;void&gt;&gt;" &lt;&lt; std::endl; std::vector&lt;std::shared_ptr&lt;void&gt;&gt; v; { std::cout &lt;&lt; "Creating …
129 c++  c++11  shared-ptr 



5
静的クラスメンバーの未解決の外部シンボル
簡単に言えば: 私はほとんど静的なパブリックメンバーで構成されるクラスを持っているので、他のクラス/関数から呼び出される必要がある同様の関数をグループ化できます。 とにかく、クラスパブリックスコープで2つの静的なunsigned char変数を定義しました。これらの値を同じクラスのコンストラクターで変更しようとすると、コンパイル時に「未解決の外部シンボル」エラーが発生します。 class test { public: static unsigned char X; static unsigned char Y; ... test(); }; test::test() { X = 1; Y = 2; } 私はC ++が初めてなので、気楽にやってください。なぜこれができないのですか?
129 c++  class  static  members 

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