問題タブ [variable-initialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 後で初期化するためのユーザー定義型の変数の宣言
process
最初は何も割り当てずに呼び出されるグローバル変数を作成したいと考えています。後で、オペレーティング システムで新しいプロセスを生成し、その変数に割り当てます。
次のように C# で実行できます。
C++で同じことを達成するために、以下のコードを書きました。process
変数の型は( child
Boost ::Process v0.31 から) です。#includesは、簡単にするために省略されています。
Test.hpp
テスト.cpp
メイン.cpp
ただし、Test.cppに対して次のエラーが返されます。
エラー C2512: 'boost::process::child': 適切な既定のコンストラクターがありません
どうすれば正しく行うことができますか?
c - C が初期化されていないローカル変数を許可するのはなぜですか?
Java や C# などの言語を調べて、初期化されていないローカル変数を使用すると、コンパイル時エラーが発生します。では、なぜ C & C++ で初期化されていないローカル変数が許可されるのでしょうか? これらの言語がこれを許可する理由は何ですか? これら2つの言語がプログラマーにポインターを含むローカル変数の強制的な初期化を強制し、言語をより安全にする場合、悪い問題の多くは発生しないか、防止できると思います。そうじゃない?
c++ - 最新の C++ コンパイラが自動的にローカル変数を 0 に初期化するというのは本当ですか?
C および C++ のローカル変数は自動的に初期化されず、初期値が指定されていない場合、それらはガベージ値を持つことを知っています。また、グローバル変数と静的変数はデフォルトでゼロに初期化されることも知っています。初期化されていない変数を使用すると、C++ で未定義の動作が発生します。
しかし最近、C++ のさまざまな実装で単純な C++ プログラムを実行しようとしましたが、すべて出力として 0 が返されます。
出力:
コードブロック 13.12 IDE: 0
Orwell Dev C++ 5.8.3: 0
Ideone.com: 0 (これにアクセスしてください: http://ideone.com/zWrgwo )
最新のコンパイラがローカル変数を自動的に 0 に初期化するというのは本当ですか? またはそのようなタイプのプログラムはまだ未定義の動作を表していますか? C++ のすべての最新の実装で常に 0 が出力として表示されることが保証されていますか?
compiler-construction - コンパイラは割り当てられていないローカル変数の使用をどのように検出しますか?
Java や C# などの言語のコンパイラは、(確実に) まだ割り当て/初期化されていないローカル変数を使用しようとすると、エラーを出します。
その機能がコンパイラにどのように実装されているのだろうか。明らかに、変数の初期化ステータスに関する情報はブール値フラグとして保存でき、代入ステートメントが検出された後にそれに応じて設定できます。しかし、ループ本体や条件ステートメントのような (ネストされた) サブスコープはどうでしょうか?
javascript - Javascript 変数の初期化に関するアドバイス
以下のようにJavascriptで複数の変数を宣言しても大丈夫ですか?
c++ - 変数の初期化に 2 つの方法がある理由
C++ で変数を初期化する方法が 2 つあるのはなぜですか?
最初の方法はC-type initialization
、変数を定義した場所で変数に値を割り当てる場所です。
int a = 0;
別の方法としてconstructor initialization
、初期値を括弧 () で囲みます。
int a(0);
私の質問は、C++ の作成者が変数を初期化する新しい方法を導入することを余儀なくされた理由は何だったのかということです。Cスタイルの初期化は仕事をしていましたが。