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

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

7
C ++での文字列型とchar []型の違い
私は少しCを知っていますが、今はC ++を調べています。私はC文字列を処理するために配列をcharするのに慣れていますが、C ++コードを見ると、文字列型とchar配列の両方を使用する例があることがわかります。 #include <iostream> #include <string> using namespace std; int main () { string mystr; cout << "What's your name? "; getline (cin, mystr); cout << "Hello " << mystr << ".\n"; cout << "What is your favorite team? "; getline (cin, mystr); cout << "I like " << …
126 c++  string  types 

7
/ MDまたは/ MTでコンパイルする必要がありますか?
Visual Studioには、コンパイルフラグ/ MDおよび/ MTがあり、必要なCランタイムライブラリの種類を選択できます。 実装の違いは理解していますが、どちらを使用するかはまだわかりません。長所/短所は何ですか? 私が聞いた/ MDの利点の1つは、これにより、誰かがランタイムを更新できるようになり(セキュリティの問題にパッチを当てるなど)、私のアプリがこの更新から恩恵を受けることです。私にとっては、これはほとんど機能ではないように見えます。新しいバージョンに対してテストすることを許可しない限り、ランタイムを変更したくないのです。 気になる点: これはビルド時間にどのように影響しますか?(おそらく/ MTは少し遅いですか?) 他の影響は何ですか? ほとんどの人はどちらを使用しますか?

12
C ++プログラムでscanf()を使用すると、cinを使用するよりも高速ですか?
これが本当かどうかはわかりませんが、問題を提供しているサイトの1つに関するFAQを読んでいたときに、何かに気づきました。 入出力メソッドを確認してください。C ++では、cinおよびcoutの使用は遅すぎます。これらを使用すると、適切な量の入力または出力で問題を解決できないことが保証されます。代わりにprintfとscanfを使用してください。 誰かがこれを明確にしてもらえますか?C ++プログラムで実際にscanf()を使用するのは、cin >>を使用するよりも速いですか?はいの場合、それをC ++プログラムで使用するのは良い習慣ですか?私はC ++を学習しているだけですが、C固有のものだと思いました...
126 c++  c  performance  io 




4
Qt:ユーザーが「X」(閉じる)ボタンを押すイベントをどのように処理しますか?
Qtを使用してアプリケーションを開発しています。「ユーザーがウィンドウフレームの「X」(閉じる)ボタンをクリックした」というイベントに対応するスロット、つまりこのボタンがわかりません。 このためのスロットがない場合は、ユーザーがその閉じるボタンを押した後に機能を開始できる他の方法を誰かに提案できますか?
126 c++  qt 

29
(アンマネージ)コードのメモリリークをどのように検出/回避しますか?[閉まっている]
現在のところ、この質問は、Q&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 アンマネージC / C ++コードで、メモリリークを検出するためのベストプラクティスは何ですか?そして避けるべきコーディングガイドラインは?(それがそのように単純であるかのように;) 私たちは過去に少しばかげた方法を使用しました:メモリ割り当ての呼び出しごとにカウンターをインクリメントし、解放中にデクリメントすることです。プログラムの最後では、カウンター値はゼロでなければなりません。 これは良い方法ではなく、いくつかの問題点があります。(たとえば、プラットフォームAPI呼び出しによって割り当てられたメモリを解放する場合、割り当て数は解放数と正確には一致しません。もちろん、割り当てられたメモリを呼び出すAPI呼び出しを呼び出すと、カウンターが増加します。) 私はあなたの経験、提案、そしておそらくこれを簡単にするツールへのいくつかの参照を期待しています。
125 c++  c  memory-leaks 

15
#define、enum、またはconstを使用する必要がありますか?
私が取り組んでいるC ++プロジェクトでは、4つの値を持つことができるフラグの種類の値があります。これらの4つのフラグは組み合わせることができます。フラグはデータベースのレコードを表し、次のいずれかになります。 新記録 削除されたレコード 変更されたレコード 既存の記録 ここで、各レコードに対してこの属性を保持したいので、列挙型を使用できます。 enum { xNew, xDeleted, xModified, xExisting } ただし、コードの他の場所では、ユーザーに表示するレコードを選択する必要があるため、次のように、それを単一のパラメーターとして渡すことができます。 showRecords(xNew | xDeleted); だから、私は3つの可能なアプローチがあるようです: #define X_NEW 0x01 #define X_DELETED 0x02 #define X_MODIFIED 0x04 #define X_EXISTING 0x08 または typedef enum { xNew = 1, xDeleted, xModified = 4, xExisting = 8 } RecordType; または namespace RecordType …

15
仮想関数とパフォーマンス-C ++
私のクラス設計では、抽象クラスと仮想関数を幅広く使用しています。仮想機能がパフォーマンスに影響を与えていると感じました。これは本当ですか?しかし、このパフォーマンスの違いは顕著ではなく、時期尚早の最適化を行っているように見えます。正しい?


2
ラムダキャプチャと同じ名前のパラメータ-誰が他をシャドウしている?(clangとgcc)
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0以降では「clang ++を使用しています!」と出力されます。キャプチャ fooが使用されていないことを警告します。 g ++ 4.9.0以降では、「あなたはg ++を使用しています!」と出力します。パラメータ fooが使用されていないことを警告します。 ここでC ++標準に正確に準拠しているコンパイラはどれですか? ワンドボックスの例

25
{…} while(false)を実行
私は個人がいくつかのコードを見ていて、彼が彼の機能にパターンを持っているように見えることに気づきました: <return-type> function(<params>) { <initialization> do { <main code for function> } while(false); <tidy-up & return> } それは悪くはなく、より奇妙です(実際のコードはかなりきちんとしていて驚くことではありません)。それは私が以前に見たものではなく、誰かがその背後にあるロジックについて考えることができるかどうか疑問に思いました-おそらく別の言語の背景?
125 c++ 

5
C ++のプライベート仮想メソッド
C ++でプライベートメソッドを仮想化する利点は何ですか? 私はオープンソースのC ++プロジェクトでこれに気づきました: class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&); };

6
代入演算子と `if(this!=&rhs)`を移動します
クラスの代入演算子では、通常、割り当てられているオブジェクトが呼び出し側オブジェクトであるかどうかを確認して、物事を台無しにしないようにする必要があります。 Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } 移動代入演算子にも同じものが必要ですか?this == &rhs真実となる状況はありますか? ? Class::operator=(Class&& rhs) { ? }

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