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

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

9
多くの例外メッセージに有用な詳細が含まれていないのはなぜですか?
例外メッセージが有用な詳細を含むべきであるという合意のある量があるようです。 システムコンポーネントからの多くの一般的な例外に有用な詳細が含まれていないのはなぜですか? いくつかの例: .NETのListインデックスアクセスがArgumentOutOfRangeExceptionないではない私にしようと、無効でした指標値を教え、またそれは私の許容範囲を教えてくれありません。 基本的に、MSVC C ++標準ライブラリからのすべての例外メッセージはまったく役に立たない(上記と同じように)。 .NETのOracleの例外。「言い換えると」「テーブルまたはビューが見つかりません」と表示されますが、どちらも表示されません。 したがって、私には、ほとんどの場合、例外メッセージには有用な詳細が含まれていないようです。私の期待はずれていますか?私はこれに気付くような間違った例外を使用していますか?または、私の印象が間違っているかもしれません:例外の大部分は実際に有用な詳細を提供しますか?
220 c#  c++  exceptions 

30
私のお父さんは、私のプログラム学習のペースに焦りを感じています。私は何をしますか?[閉まっている]
だから、お父さんは約1か月前にプログラミングに関する5冊の本(C ++、Java、PHP、Javascript、Android)を購入しました。彼は建築家であり、プログラミングについて何も知らない。プログラミングが楽しいと教えて、それを学びたいと思ったので、彼は私にそれらを買った。 ご存知かもしれませんが、子供(14歳)であり、退屈な本からプログラミングを学ぶように言われるのは簡単なことではありません。私はいつも気を散らしている..以前に本を買う必要がなく、オンラインのチュートリアルを見ることができると彼に言った。しかし、彼はとても古臭い。彼は私に本を使わせているだけです。 最近、彼は私がそれで何をしたかを尋ね始めました、そして私は彼にあなたが入力したものを取り、各文字に値を割り当てるC ++プログラムを見せました(Aはアルファベットの最初の文字なので値を取得します1)..などなど。次に、すべての値を合計して通知します。したがって、「追加」という単語の値は9になります。 ^^それは彼にとってあまり印象的ではなかった。彼は私に怒鳴りつけて、私がやってきたことのすべてがうんざりしていると言った。それは真実ではない。彼は非常に伝統的で頑固で、私が言わなければならないことは何も聞きません。彼に何を言えばいいですか? PS:本のゾーニングに関するヒントがあれば、教えてください 編集:どうもありがとう、私の状況を理解している人がいることを知っていることの意味がわかりません。私はすべてを読んだので、みんなの意見を検討します。¡グラシアス!
200 java  learning  c++ 

7
いつフロートを使用し、いつダブルを使用しますか
多くの場合、プログラミングの経験では、実数にfloatを使用するかdoubleを使用するかを決定する必要があります。フロートに行くこともあれば、ダブルに行くこともありますが、実際にはもっと主観的に感じます。私が自分の決定を守るために直面​​するなら、おそらく正当な理由を述べないでしょう。 いつfloatを使用し、いつdoubleを使用しますか?常にメモリ制約が存在する場合にのみ、doubleを使用しますか?または、精度の要件でdoubleを使用する必要がない限り、常にfloatを使用しますか?floatとdoubleの間に基本的な数理計算の計算の複雑さに関して実質的な違いはありますか?floatまたはdoubleを使用することの長所と短所は何ですか?そして、ロングダブルを使用しましたか?
194 c++  c  floating-point  numbers 

3
C ++ 11 Uniform Initializationは、古いスタイルの構文の代わりですか?
C ++ 11の統一された初期化は言語の構文上の曖昧さを解決することを理解していますが、多くのBjarne Stroustrupのプレゼンテーション(特にGoingNative 2012の講演中のプレゼンテーション)では、彼の例は主にオブジェクトを構築するときに常にこの構文を使用しています。 すべての場合に均一な初期化を使用することをお勧めしますか?コーディングスタイルと一般的な使用法に関する限り、この新しい機能に対する一般的なアプローチはどうあるべきですか?使用しない理由は何ですか? 私の考えでは、ユースケースとして主にオブジェクトの構築を考えていますが、考慮すべき他のシナリオがある場合はお知らせください。
172 c++  c++11 

12
C ++を介したC、およびCを介したC ++を使用する場合
私はもう1年以上コンピューターサイエンスを紹介されていますが、私の経験から、CやC ++はどちらも「超高速」言語と見なされているようですが、Pythonやその他のスクリプト言語などは通常やや遅いと思われます。 しかし、ソフトウェアプロジェクトまたは小さなプロジェクトでさえ、それらのファイルの特定の数nがCで書き込まれ、それらのファイルの特定の数mがC ++で書き込まれるファイルをインターリーブする多くのケースを見てきました。 (C ++ファイルにはほとんどの場合対応するヘッダーがありますが、Cファイルにはそれほど多くないことに気付きました)。しかし、私の主な質問のポイントは、C ++を介してCを使用するのが適切な場合、およびCを介してC ++を使用する方が適切な場合の一般的な直感を得ることにあります。(1)C ++がオブジェクト指向であるという事実以外Cはそうではなく、(2)構文は非常に似ており、C ++は多くの点でCに似ているように意図的に作成されましたが、その違いはわかりません。それらは多くのドメインで(ほぼ)完全に互換性があるように思えます。 だから誰かが状況を解決できたら幸いです!ありがとう
164 c++  c 

19
C、Perl、Pythonなどの代わりにC ++を使用する理由はありますか?[閉まっている]
Linux(サーバー側)開発者として、C ++をどこで、なぜ使用する必要があるのか​​わかりません。 パフォーマンスに行くとき、最初と最後の選択肢はCです。 「パフォーマンス」が主要な問題でない場合は、PerlやPythonなどのプログラミング言語が適切な選択です。 この分野で私が知っているほとんどすべてのオープンソースアプリケーションは、C、Perl、Python、Bashスクリプト、AWK、さらにはPHPで書かれていますが、誰もC ++を使用していません。 GUIやWebアプリケーションのような他の分野については話していません。Linux、CLI、デーモンについてだけ話しているのです。 C ++を使用する十分な理由はありますか?

11
C / C ++という用語の使用をやめるべきですか?
CとC ++は異なる言語であることは理解していますが、C ++を学習していたとき、CはC ++のサブセットであるか、C ++はクラスを持つCであると常に言われました。そして、C ++ x0、C ++ 11(または一般的な現代のC ++ 11/14/17)が登場するまで、それは非常に真実でした。実際(特に組み込みシステムで作業している場合)、C ++で記述されたコードを見つける可能性が非常に高くなりますが、多くの部分は完全に純粋なC言語で記述されています。ここにいくつかの質問があります: C / C ++という用語の使用をやめるべきですか? #1の答えが「はい」の場合、CとC ++を組み合わせて使用​​するプログラムをどのように呼び出すのでしょうか? それらの両方が「異なる」言語であることを考えると、C ++コンパイラがC言語で書かれたコードのサポートをやがて停止する可能性があります(現代のc ++はポインタ、動的メモリ処理などの基本的なもののためにCの考え方とは異なるため) 現在、互換性を維持するためにC / C ++の標準を作成している人々の間でコラボレーションはありますか #4が「はい」の場合、このようなコラボレーションは近い将来、現代のc ++(11/14/17)の登場で終わる可能性があります 私はすでに同様の質問があることを知っていますが、多くの人々がこれらの質問を共有していると確信していますので、特に近い将来のC ++の傾向に関係する点については良い答えを得ることに非常に興味があります。
140 c++  c  terminology  c++11 

15
Java、Javascript、C#などのメモリ管理言語が「new」キーワードを保持しているのはなぜですか?
newJava、Javascript、C#などの言語のキーワードは、クラスの新しいインスタンスを作成します。 この構文は、C ++から継承されているようです。C++ newは、ヒープ上のクラスの新しいインスタンスを割り当て、新しいインスタンスへのポインターを返すために特に使用されます。C ++では、これがオブジェクトを構築する唯一の方法ではありません。new- を使用せずにスタック上にオブジェクトを作成することもできます。実際、この方法のオブジェクトの作成方法はC ++でより一般的です。 だから、C ++のバックグラウンドから来て、newJava、Javascript、C#のような言語のキーワードは、私にとって自然で明白なように思えました。それから、newキーワードのないPythonを学び始めました。Pythonでは、次のように、コンストラクターを呼び出すだけでインスタンスが構築されます。 f = Foo() 最初は、Pythonが持つ理由がないことに気付くまで、これは少しnew戸惑いました。すべてがオブジェクトであるため、さまざまなコンストラクタ構文を明確にする必要はありません。 しかし、それから私は考えました-Javaの本当のポイントは何newですか?なんで言うのObject o = new Object();?どうしてObject o = Object();?C ++ではnew、ヒープへの割り当てとスタックへの割り当てを区別する必要があるため、間違いなくが必要ですが、Javaではすべてのオブジェクトがヒープ上に構築されますnew。Javascriptについても同じ質問をすることができます。私があまり馴染みのないC#では、newオブジェクト型と値型を区別するという点で何らかの目的があると思いますが、よくわかりません。 とにかく、C ++の後に来た多くの言語は単にnewキーワードを「継承」しているように思えます-本当にそれを必要としません。それはほとんど痕跡のキーワードのようなものです。なんらかの理由でそれを必要としているようには見えませんが、まだあります。 質問:これについて正しいですか?あるいはnew、Java、Javascript、C#などのC ++にインスパイアされたメモリ管理言語である必要があり、Pythonではなくてはならない説得力のある理由がありますか?

8
C ++はDよりも優れているのでしょうか?
私は最近Dを学んでおり、言語にある程度精通し始めています。私はそれが提供するものを知っています、私はまだすべてを使う方法を知りません、そして、Dイディオムなどについて多くを知りません、しかし、私は学んでいます。 私はDが好きです。これは素晴らしい言語であり、ある意味ではCの大規模な更新であり、うまく機能しています。どの機能も「ボルトオン」されているようには見えませんが、実際には非常によく考え抜かれ、適切に設計されています。 DはC ++であるべきだとよく耳にします(不必要な火炎戦争を避けるために、誰もが自分で決定するのが正しいかどうかは疑問です)。また、いくつかのC ++プログラマーから、C ++よりもはるかにDを楽しんでいると聞きました。 私自身はCを知っていますが、C ++を知っているとは言えません。C ++が言語として Dよりも優れている何かがあると思う場合、C ++とDの両方を知っている人から聞きたいです(通常の「サードパーティライブラリが多い」または「リソースが多い」または「 DよりもC ++を必要とするジョブが多い」)。 Dは、C ++が抱えていた多くの問題を修正するために、非常に熟練したC ++プログラマー(Walter BrightとAndrei Alexandrescu、Dコミュニティの助けを借りて)によって設計されましたが、実際には結局良くならない何かがありましたか?彼が逃した何か?あなたがより良い解決策ではなかったと思うものはありますか? また、私はD 1.0ではなくD 2.0について話していることに注意してください。

16
Cがとても危険なのに、なぜ人々はCを使うのですか?
Cの学習を検討しています。 しかし、なぜ「危険」に使用できるのにC(またはC ++)を使用するのでしょうか? 危険というのは、ポインターやその他の類似のものを意味します。 Stack Overflowの質問のように、gets関数は使用すべきでないほど危険なのはなぜですか?。プログラマーがJavaやPython、またはVisual Basicのような別のコンパイル言語を使用しないのはなぜですか?
132 c++  c 

14
自動でC ++コードを理解しにくくしますか?
私はハーブサッターによるカンファレンスを見て、そこで彼はすべてのC ++プログラマーの使用を奨励していますauto。 C#コードvarを広く使用されていたコードを読む必要があり、コードを理解するのは非常に困難varでした。時間の経過ごとに右側の戻り値の型を確認する必要がありました。しばらくして変数の型を忘れてしまったので、時々複数回! コンパイラーは型を知っているので、型を書く必要はありませんが、コンパイラーではなくプログラマー向けにコードを書くことは広く受け入れられています。 私はそれがより簡単に書くことも知っています: auto x = GetX(); より: someWeirdTemplate<someOtherVeryLongNameType, ...>::someOtherLongType x = GetX(); ただし、これは1回しか記述されず、GetX()戻り値の型が何回あるかを理解するために何度もチェックされますx。 これは私に不思議に思いましたauto—C ++コードを理解するのを難しくしますか?
122 c++  c++11 

11
C ++はJITを使用したJVMまたはCLRよりも高速であるという主張を裏付けるものは何ですか?[閉まっている]
多くの質問で気づいたSEの繰り返しのテーマは、C ++がJavaのような高レベル言語よりも高速で効率的であるという継続的な議論です。反論は、最近のJVMまたはCLRは、増加するタスクのJITなどのおかげで同じように効率的であり、C ++ は、あなたが何をしていて、なぜ特定の方法で物事をしているのかを知っている場合にのみ効率的であるということですパフォーマンスの向上に値します。それは明らかであり、完全に理にかなっています。 JVMやCLRよりもC ++で特定のタスクが高速である理由と方法についての基本的な説明(そのようなことがある場合)を知りたいのですが?JVMまたはCLRが実行時にJITコンパイルの処理オーバーヘッドをまだ持っているのに対して、C ++がマシンコードにコンパイルされているからでしょうか? トピックを調査しようとすると、C ++が高性能コンピューティングにどのように利用できるかを正確に理解することに関する詳細な情報なしで、上で概説したのと同じ議論だけを見つけます。
119 java  c++  performance  jit 

13
C ++にはあるがJavaにはない言語機能を避けるべきですか?
プロジェクトの環境によってC ++の使用に制限されているとします。C ++にはあるがJavaにはないいくつかの言語機能(例えば、多重継承、演算子のオーバーロード)の使用を防ぐのは良いですか? その理由は次のとおりです。 JavaはC ++よりも新しいため、JavaがC ++の機能を提供しない場合、その機能は適切ではないことを意味するため、使用を避ける必要があります。 C ++固有の機能(例:フレンド関数、多重継承)を備えたC ++コードは、C ++プログラマーのみが保守またはレビューできますが、JavaのようなC ++(C ++言語固有の機能なし)を記述するだけで、コードは両方によって保守またはレビューできますC ++およびJavaプログラマ。 いつかJavaにコードを変換するように求められる場合があります 通常、C ++固有の機能を持たないコードの方が保守しやすい すべてのC ++言語固有の機能(例:多重継承)には、Javaで実装する代替手段が必要です。そうでない場合、設計パターンまたはコードアーキテクチャに問題があることを意味します。 本当?
110 java  c++  code-quality 

4
「長い」禁止は理にかなっていますか?
今日のクロスプラットフォームC ++(またはC)の世界では、次のことができます。 Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS …

10
私の同僚全員がメタプログラミングを理解していなくても、メタプログラミングを使用しても大丈夫ですか?
反復的なタスクを避け、より安全に使用できる抽象化を構築するために、多くのメタプログラミングを採用しています。 私は最近、より大きなチームで働いている新しい仕事に移りました。これは私の同僚の何人かを心配します。彼らはそれを理解していないからです。 私は常に言語の可能性をフルに活用しようとしますが、同僚の一部(すべてではない)がそれをリスクとして認識しています(一部はアプローチを歓迎します)。 チームの他の誰も理解できないコードを書くことは問題だと思います。一方、私たちはすべてプロのC ++開発者であり、クラスでCを書くよりも高い標準を目指すべきだと思います。 私の質問は、誰が正しいのか、私は何をすべきですか? 明確化: 言語の可能性を最大限に活用しようとしても、すべての問題にTMPを投げるわけではありません。C ++はツールボックスであり、私にとってC ++の習熟度とは、ボックスのすべてのツールを使用できることと、特定のジョブに適したツールを選択することです。

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