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

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

10
C ++ 11にはどのような重大な変更が導入されていますか?
古いコードのコンパイルを停止させるC ++ 11の変更の少なくとも1つはexplicit operator bool()、標準ライブラリに導入され、operator void*()。確かに、これが機能しなくなるコードはおそらく最初から有効ではなかったはずのコードですが、それでもなお重大な変更です。以前は有効であったプログラムはもはや機能しなくなりました。 他に重大な変更はありますか?
227 c++  c++11 

18
なぜswitchステートメントを文字列に適用できないのですか?
次のコードをコンパイルすると、のエラーが発生しましたtype illegal。 int main() { // Compilation error - switch expression of type illegal switch(std::string("raj")) { case"sda": } } switchまたはで文字列を使用することはできませんcase。どうして?文字列をオンにするのと同様のロジックをサポートするためにうまく機能する解決策はありますか?

11
非const参照が一時オブジェクトにバインドできないのはなぜですか?
一時オブジェクトへの非const参照の取得が許可されないのはなぜgetx()ですか、どの関数が返しますか?明らかに、これはC ++標準では禁止されていますが、標準への参照ではなく、そのような制限の目的に興味があります。 struct X { X& ref() { return *this; } }; X getx() { return X();} void g(X & x) {} int f() { const X& x = getx(); // OK X& x = getx(); // error X& x = getx().ref(); // OK g(getx()); //error g(getx().ref()); //OK return 0; …


7
C ++で参照渡しよりもポインタ渡しの利点はありますか?
C ++で参照渡しよりポインタ渡しの利点は何ですか? 最近、参照で渡すのではなく、ポインタで関数の引数を渡すことを選択した多くの例を見てきました。これを行うメリットはありますか? 例: func(SPRITE *x); の呼び出しで func(&mySprite); 対 func(SPRITE &x); の呼び出しで func(mySprite);

8
正確にベースポインターとスタックポインターは何ですか?彼らは何を指していますか?
WikiSquare()がDrawLine()を呼び出すウィキペディアからのこの例を使用すると、 (この図の下部には高いアドレスがあり、上部には低いアドレスがあることに注意してください。) 誰かが私に何ebpを説明してくれespますか? 私が見るところから、スタックポインターは常にスタックの先頭を指し、ベースポインターは現在の関数の先頭を指していると思いますか?または何? 編集:これはWindowsプログラムのコンテキストでこれを意味します edit2:また、どのように機能しeipますか? edit3: MSVC ++からの次のコードがあります。 var_C= dword ptr -0Ch var_8= dword ptr -8 var_4= dword ptr -4 hInstance= dword ptr 8 hPrevInstance= dword ptr 0Ch lpCmdLine= dword ptr 10h nShowCmd= dword ptr 14h それらはすべてdwordのようで、それぞれ4バイトを使用します。したがって、hInstanceから4バイトのvar_4へのギャップがあることがわかります。彼らは何ですか?ウィキペディアの写真に見られるように、私はそれが戻りアドレスだと思いますか? (編集者のメモ:質問に属さないマイケルの回答から長い引用を削除しましたが、フォローアップ質問が編集されました): これは、関数呼び出しのフローが次のとおりであるためです。 * Push parameters (hInstance, etc.) * Call function, which pushes …
225 c++  c  assembly  x86 


5
C ++での_tmain()とmain()の違いは何ですか?
C ++アプリケーションを次のmain()メソッドで実行すると、すべて問題ありません。 int main(int argc, char *argv[]) { cout << "There are " << argc << " arguments:" << endl; // Loop through each argument and print its number and value for (int i=0; i<argc; i++) cout << i << " " << argv[i] << endl; return 0; } 期待どおりの結果が得られ、引数が出力されます。 …
224 c++  unicode  arguments 

13
Windowsに最適な無料のC ++プロファイラーは何ですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 4年前休業。 この質問を改善する C ++コードのボトルネックを見つけるために、プロファイラーを探しています。無料で邪魔にならない、優れたプロファイリングツールを見つけたいのですが。私はゲーム開発者です。Xbox360でPIXを使用していますが、非常に優れていることがわかりましたが、無料ではありません。インテルVTuneは知っていますが、無料でもありません。
224 c++  windows  profile 

6
テンプレート引数として渡される関数
C ++テンプレート関数を引数として渡すことに関するルールを探しています。 これは、次の例に示すように、C ++でサポートされています。 #include <iostream> void add1(int &v) { v+=1; } void add2(int &v) { v+=2; } template <void (*T)(int &)> void doOperation() { int temp=0; T(temp); std::cout << "Result is " << temp << std::endl; } int main() { doOperation<add1>(); doOperation<add2>(); } ただし、この手法について学ぶことは困難です。「テンプレート引数としての関数」のグーグルはあまり役に立ちません。そして、古典的なC ++テンプレートの完全ガイドでは、驚くべきことに、それについても説明していません(少なくとも私の検索では)。 私が持っている質問は、これが有効なC ++(または単に広くサポートされている拡張機能)かどうかです。 また、この種のテンプレート呼び出し中に、同じシグネチャを持つファンクターを明示的な関数と交換可能に使用できるようにする方法はありますか? 上記のプログラムでは、少なくともVisual …





5
std :: string_viewはconst std :: string&よりどのくらい正確に高速ですか?
std::string_viewはC ++ 17に対応しており、の代わりに使用することをお勧めしますconst std::string&。 その理由の1つはパフォーマンスです。 誰かが、パラメータタイプとして使用した場合よりも正確に std::string_view、または高速になると説明できますかconst std::string&?(呼び出し先にコピーが作成されていないと仮定しましょう)
221 c++  string  c++17  string-view 

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