問題タブ [initialization-list]
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++ - C++のプリミティブ型の初期化リストと「=」文字を使用した定義に違いはありますか?
たとえば、整数を定義したいとします。私はC++で2つの方法でそれを行うことができます:
int a = 10;
int a(10);
2つに違いはありますか、それとも単に好みの問題ですか?
c++ - 初期化リストにいくつかのブール値がある C++ 11 Segfault
int と多くの bool メンバーを持つ単純なクラス Actor を作成しました。
これは、actor.cpp ファイルからの抜粋です。
...
これは、actor.h ヘッダー ファイルからのものです。
これはエラーなしでコンパイルされ、
しかし、プログラムを実行すると、最初に奇妙な segfault が発生します。
ここで、初期化リスト内のすべての bool をコメント (//,left(false)) に入れ、gcc にすべてをコンパイルさせると、プログラムは完全に実行されます!
なにが問題ですか?初期化リストを介してすべてのクラスメンバーを初期化する方が良いと思いました。
これは g++ のバグでしょうか?
left(false) の代わりに left() を使用してみました。いいえ: プログラムのどこにも new- または *- 演算子を使用していません!
c++ - C++ クラスの初期化リストの例
新しい Stroustrup ブックの第 17 章を読んでいて、初期化リストを使用してクラスを初期化することに混乱しています。
例:
.hpp:
.cpp で:
またはそれは.cppにあります:
そしてそれを呼び出す:
私は 1998 年に c++ を学び、最近まで何年にもわたってプログラミングを繰り返してきました。このようなものはどのくらい前に変更されましたか? 古い方法でもまだできることはわかっていますが、本当に新しいことを学びたいです!
c++ - 派生初期化リストで親のアドレスを取得する
子コンストラクターの初期化リストで基本クラスの 1 つのアドレスを取得する標準的で安全な方法はありますか?
これが私がやりたいことです:
バッファを処理する機能を提供する複数のクラス (void*、長さ) があり、データを保持する複数のクラス (C スタイルの構造体) があります。最小限のコードで両方を組み合わせてユーザーに提供したいと考えています。これが私が考えていることです:
これにより、gcc は正常にコンパイルされますが、Visual Studio では警告が表示されます。後で他の組み込みコンパイラを試してみます。MISRA C++ チェック、ポリスペースチェック、およびその他の静的解析ツールに合格できる標準ソリューションを探しています。
編集:
Visual Studio の警告: 警告 C4355: 'this': 基本メンバー初期化子リストで使用
c++ - とにかく、初期化リストの前に CoInitialize() を呼び出すには?
ThorDetectorSwitch.cpp ファイルのコンストラクターの C++ コードを次に示します。
ご覧のとおり、初期化リスト は_mcSwitch(__uuidof(MCLControlClass))
、COM オブジェクト (COM dll から登録された MCLControlClass) を初期化するために使用されます。
とにかく、この初期化リストの前に CoInitialize() を呼び出すことができるのでしょうか? 「CoInitialize() が呼び出されていません」という例外が発生しているためです。または、この例外を回避する他の方法はありますか?
どうもありがとう。
c# - これら 2 つのリストの初期化は同一ですか?
変換したい
var aList = new List<string>(new string[] { "elem1", "elem2", "elem3" });
への初期化
var aList = new List<string>() { "elem1", "elem2", "elem3" };
私たちのソースコードで。後者は不要な配列作成や配列→リスト変換が無いと思います。それとも前者も?それとも、コンパイラはとにかくそれを最適化しますか? 後で望ましくない副作用 (または副作用の欠如) に直面することはありますか?
プロジェクトは .NET 4 を使用します。
c++ - C++ コンストラクターの初期化
次のコードがあります。
y1.show() は「Krypton」を表示するはずですが、実行時エラーが発生します (y1.show() が呼び出されているときに s1 が初期化されていないためですか?)。
Q1. コンストラクターの初期化リストで既に初期化されているのに、s1 が初期化されないのはなぜですか? Q2. 文字列 s1 を使用しても同じエラーが発生しないのはなぜですか。参照の代わりに?
どんな助けでも大歓迎です。
よろしく、
ジェイ。