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

静的に型付けされた自由形式のマルチパラダイムでコンパイルされた汎用プログラミング言語であるC ++に関する質問。

4
#include <iostream.h>が悪いのはなぜですか?
私は別のスレッドを読んでいたが、ある男が初心者向けにC ++の本について尋ね、プログラマーの一人がこれを書いた。 いくつかの警告:「hello world」を示すすべての本を避ける #include &lt;iostream.h&gt; C ++ブックを開いて、上記の例のようなiostreamヘッダーが含まれていることを確認しました。 なぜそれが悪いのですか?C ++を学習するとき、他にどのような留意点がありますか? 背景:私はCに精通しており、次の学期にC ++を学び始めます。

2
ユニットテストの効率を最大化するには、C ++ユニットテストコードをどのように編成する必要がありますか?
この質問は、単体テストフレームワークに関するものではありません。 この質問は、単体テストの作成に関するものではありません。 この質問は約あるところ書かれたUTのコードを配置する方法と、/とき/コンパイルし、それを実行する場所。 レガシーコードを効果的に使用するにあたって、Michael Feathersは次のように主張しています。 優れた単体テスト...高速で実行 そしてそれ 実行に1/10秒かかる単体テストは、低速の単体テストです。 これらの定義は理にかなっていると思います。私はまた、ユニットテストのセットと、より長い時間がかかるコードテストのセットを別々に保持する必要があることを示唆していると思いますが、それが(非常に)高速に実行される場合、ユニットテストと呼ばれるものだけに支払う代償だと思います。 明らかに問題 ++ Cでは、「実行」へのあなたのユニットテスト(複数可)、あなたがする必要があります。 コードを編集します(使用している「サイクル」に応じて、本番またはユニットテスト) コンパイル リンク 単体テスト実行可能ファイルの開始(s) 編集(奇妙な近い投票の後):詳細に入る前に、ここでポイントを要約してみます: (テスト)コードの編集とテストコードの実行の両方が効率的になるように、C ++ユニットテストコードを効果的に編成するにはどうすればよいですか? 最初の問題は、その後、決定することですどこようにユニットテストコードを配置します: 関連する製品コードと組み合わせて編集および表示するのは「自然」です。 現在変更しているユニットのコンパイルサイクルを開始するのは簡単です。 次に、関連する2番目の問題は、フィードバックが瞬時に行われるようにコンパイルするものです。 極端なオプション: 各Unit-Test-Test-Unitは個別のcppファイルに存在し、このcppファイルは(テストするソースコードのユニットファイルと共に)個別にコンパイルおよびリンクされ、単一の実行可能ファイルにリンクされます。 (+)これにより、単一のテストユニットの起動(コンパイル+リンク!)時間を最小限に抑えることができます。 (+)テストは1つのユニットのみをテストするため、超高速で実行されます。 (-)スイート全体を実行するには、膨大な数のプロセスを開始する必要があります。管理することが問題になる場合があります。 (-)プロセス開始のオーバーヘッドが見えるようになる 反対側は、テストごとに1つのcppファイルを持っていますが、すべてのテストcppファイルは(テストするコードとともに)1つの実行可能ファイルにリンクされています(モジュールごと/プロジェクトごと/選択を選択してください)。 (+)変更されたコードのみがコンパイルされるため、コンパイル時間は問題ありません。 (+)実行するexeは1つしかないため、スイート全体の実行は簡単です。 (-)任意のオブジェクトを再コンパイルすると再リンクがトリガーされるため、スイートはリンクするのに時間がかかります。 (-)(?)スーツの実行には時間がかかりますが、すべてのユニットテストが高速であれば、時間は問題ないはずです。 それでは、実際のC ++ 単体テストはどのように処理されますか?夜間/毎時だけ実行する場合、2番目の部分は実際には重要ではありませんが、最初の部分、つまりUTコードを本番コードに「結合」する方法です。フォーカスは常に重要だと思います。(そして、開発者がUTコードに焦点を合わせている場合、彼らはそれを実行したいと思うので、パート2に戻ります。) 現実世界の物語と経験に感謝します! ノート: この質問は、意図しないプラットフォームとメイク/プロジェクトシステムを意図的に残します。 質問タグ付きUT&C ++は開始するのに最適な場所ですが、残念ながらあまりにも多くの質問、特に回答が詳細や特定のフレームワークに集中しすぎています。 少し前に、ブーストユニットテストの構造に関する同様の質問に答えました。この構造は、「実際の」高速な単体テストには欠けていることがわかりました。そして、私は他の質問が狭すぎると思うので、この新しい質問です。

5
クラスに関係のない関数はどこに置くべきですか?
私はクラスの一部として使用するために最初に書いた数学関数の束があるC ++プロジェクトに取り組んでいます。もっとコードを書いているうちに、どこでもこれらの数学関数が必要だと気づきました。 それらを置くのに最適な場所はどこですか?私がこれを持っているとしましょう: class A{ public: int math_function1(int); ... } そして、私が別のクラスを書くとき、私はその他のクラスでそれを使用することはできません(または、少なくともその方法を知りません)math_function1。さらに、この関数の一部はクラスAに実際には関連していないことに気付きました。それらは最初のように見えましたが、今では数学関数であることがわかります。 この状況での良い習慣は何ですか?今、私はそれらを新しいクラスにコピー&ペーストしていますが、これは最悪のプラクティスだと確信しています。
47 c++  functions  class 


13
なぜ最新の動的言語よりも重いGUIアプリを構築するのにC ++が好まれているのですか?[閉まっている]
重いGUIコンテンツを含むアプリのほとんどは、通常C ++で開発されています。ほとんどのゲーム/ブラウザはC ++でコーディングされています。 最新の動的言語でより良いGUIアプリを開発することはできませんか?私はjavaが素晴らしい選択ではないことを知っています。しかし、ネイティブにCで構築されているpythonのような言語はどうでしょうか?最新の言語は祖先よりも優れているはずではありませんか?なぜ最新の言語よりも古いC ++を優先する必要があるのですか? また、GUIの処理速度を向上させるために、C ++で責任を負うのは何ですか?一方、他の最新の言語に欠けているのは何ですか?

13
プログラミングのメンターを見つける方法 [閉まっている]
プログラミングを学ぶことにしました。私は数日間SOを読んでおり、いくつかの記事を読んでいるので、C ++から始めると思います。ループ、配列、プログラムロジック、オブジェクトについては少し知っているので、最初のプロジェクトを行うときに得られる小さな質問で私を見て助けてくれる人が必要です。 だからここに質問があります-私はそのような人をどこで見つけますか?プログラミングをしている友人は誰もいません。 編集:2年後、私はまだメンターを探しています。私は積極的にコードを作成しませんでした。Cocos2dを使用して、Objective-CおよびiOSプログラミングとゲームプログラミングに取り組んでいます。あなたが私のメンターになりたいなら、私をドロップするかコメントしてください。
46 learning  c++  teaching 

16
履歴書の言語:「C / C ++」または「C、C ++」を置く方が良いですか?[閉まっている]
数週間で卒業し、履歴書には(予想どおり)経験した言語がリストされています。以前は"C / C ++"を使用していましたが、当時は今のようにこれら2つの言語でそれほど経験がありませんでした。 これら2つの言語を正式に習得したので、私(およびこれらの言語を本当に知っている人)は、それらが類似しており、同時に完全に非類似であることが明らかになりました。確かに、ほとんどのCコードはコンパイル可能なC ++コードですが、構文とライブラリ関数の組み込みは、これらの類似性が終わるところでほとんど行われます。ほとんどの自明でない問題では、望ましいC ++ソリューションが望ましいCソリューションと異なる可能性があります。 私の質問: リクルーターは、「C、C ++」ではなく「C / C ++」を配置するかどうかに注意したり、気にしたりしますか?彼らは、最初のフォームが含まれているため、または2番目のフォームが含まれていることを潜在的な「履歴書ビーフ」(「1」ではなく2言語としてリストする)のいずれかの動作に関する知識の欠如を想定しますか? ? さらに、これらの2つの言語に特に関心のある求人の場合、面接プロセスにはCプログラミングとC ++プログラミングの違いに関する質問が含まれていましたか(実際のプログラミング手法ではなく、後者の余分なパラダイムだけでなく)?
46 c++  resume  c 

9
CI主導の開発をどのように回避しますか...?
私は非常に大規模な研究主導型のオープンソースプロジェクトに取り組んでおり、他の多くの定期的な貢献者もいます。プロジェクトは現在非常に大きいため、コンソーシアム(2人の常勤従業員と少数のメンバーで構成される)がプロジェクトの維持、継続的統合(CI)などを担当しています。外部の統合のための時間がありません。しかし貢献。 このプロジェクトは、「コア」フレームワーク、約50万行程度のコード行、コンソーシアムが管理する「プラグイン」の束、およびいくつかの外部プラグインで構成されています。気づいてさえいません。 現在、私たちのCIはコアとメンテナンスされたプラグインを構築しています。 私たちが直面している大きな問題の1つは、ほとんどの貢献者(および特に臨時の貢献者)がメンテナンスされたプラグインの90%を構築していないことです。 GitHubでプルリクエストを行う前に、コードがマシンでコンパイルされることを確認しました。 コードは機能し、満足し、CIはビルドを終了し、問題が始まります。コンソーシアムが管理しているプラ​​グインでコンパイルが失敗しました。コントリビューターは自分のマシンではビルドしませんでした。 そのプラグインは、たとえばCUDAなどのサードパーティライブラリに依存している可能性があり、ユーザーは壊れたプラグインをコンパイルしたくない、ハードウェア上の理由でコンパイルできない、または単にできない。 そのため、PRはマージされないPRの辺りにとどまるか、寄稿者が壊れたプラグインのソースで名前を変更した変数を把握し、コードを変更し、ブランチをプッシュし、 CIがコンパイルを終了し、通常はエラーが増え、CIが満足するまでプロセスを繰り返します-または、コンソーシアムで既にオーバーブッキングされている2人のパーマネントのうちの1人が手を差し伸べ、マシンのPRを修正しようとします。 これらのオプションはいずれも実行可能ではありませんが、どのように異なる方法を実行するのかわかりません。プロジェクトの同様の状況に直面したことがありますか?もしそうなら、この問題をどのように処理しましたか?ここに表示されていない解決策はありますか?

7
ヘッダーの地獄を防ぐにはどうすればよいですか?
新しいプロジェクトをゼロから始めています。約8人の開発者、1ダースほどのサブシステム、それぞれ4つまたは5つのソースファイル。 「ヘッダー地獄」、別名「スパゲッティヘッダー」を防ぐために何ができますか? ソースファイルごとに1つのヘッダーですか? サブシステムごとにプラス? 関数プロトタイプからtypdef、stucts、enumを分離しますか? サブシステムの内部をサブシステムの外部のものから分離しますか? ヘッダーまたはソースがスタンドアロンコンパイル可能である必要があるかどうかにかかわらず、すべての単一ファイルを主張しますか? 私は「最善の」方法を求めているのではなく、何に気を付け、悲しみを引き起こす可能性があるのか​​を示し、それを回避しようとすることができます。 これはC ++プロジェクトになりますが、C情報は将来の読者に役立つでしょう。
45 c++  headers  include 


3
サブクラスとサブタイプの違いは何ですか?
Liskov Substitution Principleについてのこの質問に対する最も高い評価の答えは、サブタイプとサブクラスという用語を区別するのに苦労します。また、一部の言語はこの2つを統合しますが、他の言語は統合しないという点も重要です。 私が最もよく知っているオブジェクト指向言語(Python、C ++)の場合、「タイプ」と「クラス」は同義の概念です。C ++に関して、サブタイプとサブクラスを区別することはどういう意味ですか?たとえば、Fooサブクラスではなく、サブタイプであるとしFooBaseます。のfooインスタンスがの場合Foo、次の行になります: FooBase* fbPoint = &amp;foo; 無効になりましたか?

11
符号なし整数に関するベストプラクティスは何ですか?
私はどこでも符号なしintを使用していますが、そうすべきかどうかはわかりません。これは、データベースの主キーID列からカウンタなどになります。数値が負の値にならないようにする場合は、常にunsigned intを使用します。 しかし、他のコードでは、他の誰もこれを行っていないようです。私が見落としている重要なものはありますか? 編集:この質問以来、私はCでは、C ++のように例外をスローするのではなく、エラーに対して負の値を返すことが一般的であることに気付きました。


6
FacebookがPHPコードをC ++に変換するのはなぜですか?[閉まっている]
FacebookはPHPで始まり、速度を上げるために、PHPをC ++コードとしてコンパイルするようになりました。もしそうなら、なぜそうしないのですか: C ++でプログラムするだけですか?PHPをc ++コードに移植する魔法のコンパイラボタンを押すと、間違いなくいくつかのエラー/バグがあるはずですよね? この印象的なコンバーターが非常にうまく機能するのであれば、なぜPHPにこだわるのでしょうか?RubyやPythonなどを使用しないのはなぜですか?注-これら2つをランダムに選択しましたが、ほとんどの人がこれらの言語でのコーディングは「喜び」だと言っているためです。それでは、なぜ素晴らしい言語で開発してから、魔法のc ++コンパイルボタンを押してみませんか?
42 c++  php  compiler  facebook 

7
(Javaとは異なり)静的データメンバーをC ++でクラスの外部で個別に定義する必要があるのはなぜですか?
class A { static int foo () {} // ok static int x; // &lt;--- needed to be defined separately in .cpp file }; A::x.cppファイル(またはテンプレート用の同じファイル)で個別に定義する必要はありません。A::x同時に宣言と定義ができないのはなぜですか? 歴史的な理由で禁止されていますか? 私の主な質問は、staticデータメンバが同時に宣言/定義された場合(Javaと同じ)、機能に影響しますか?

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