問題タブ [default-constructor]
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++ - POD 構造体から継承されたクラスのデフォルト コンストラクターの奇妙な動作
この質問はこれに関連しています。
前の質問で述べたように、拡張機能を提供するために、クラスを Win 構造 BITMAP から継承することにしました。
コンパイルされたプログラムの動作に関心の詳細があることに気付きました。まず、以下のようにクラスのデフォルト コンストラクターを定義しました。
アイデアでは、コンパイラは、初期化リストで手動で呼び出されなかった場合でも、基本型のデフォルト コンストラクターを呼び出すコードを生成する必要がありました。しかし、デバッグ中に BITMAP のデータ メンバーが初期化されていないことに気付きました。BITMAP の手動初期化を追加したところ、機能しました。すべてのデータ メンバーがゼロで初期化されました。
なぜそれが起こるのですか?コンパイラはデフォルトのコンストラクタを呼び出す義務がありますか、それともクラスにのみ適用されますか? (そうは思えません-違いは、メンバーと継承のデフォルトのアクセス修飾子だけです)
php - PHP にデフォルトのコンストラクターがないのはなぜですか?
このようなコードを使用できないのはなぜですか?
例えば。Java クラスにはデフォルトがあり、args コンストラクターはありません。明示的に定義されていなくても呼び出すことができます。
親クラスから args コンストラクターを削除しないと、PHP の動作が問題を引き起こす可能性があります。もう必要ないと思うとき。
PHP の作成者がなぜこのような方法をとったのか、誰か知っていますか?
c++ - イテレータのデフォルト コンストラクタと POD メンバの初期化
boost::iterator_facade のドキュメントの例 [1] から:
脚注が続きます。
技術的には、C++ 標準では、デフォルトで構築されたイテレータにほとんど要件を課していないため、効率を本当に重視する場合は、m_node を初期化しないままにするデフォルト コンストラクタを記述できます。
私の質問 (2 つの部分):
(a) C++ 標準は、デフォルトで構築された反復子にどのような要件を課していますか?
(b) をインスタンス化するときに除外するとm_node(0)
初期化が回避されるのはなぜですか? とにかく、デフォルトで初期化され ませんか(したがって、ゼロで初期化されますか)?m_node
node_iterator
m_node
[1] http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/iterator_facade.html#constructors-and-data-members (注意: この質問はブーストの例に由来しますが、私は信じていますこれは STL イテレータに適用されるため、「boost」タグは使用しませんでした。)
c++ - 初期化されていない定数
これは、現在の MSVC コンパイラで完全に正常にコンパイルされます。
ただし、現在の g++ コンパイラではコンパイルに失敗します。
自分でデフォルトのコンストラクターを提供すると、機能します。
これは、MSVC が寛容すぎる別のケースですか、それともここでは g++ が厳しすぎるのでしょうか?
c++ - クラス型を持つconst変数のデフォルトの初期化を防ぐ方法
組み込み型のように動作させたいカスタムクラスがあります。
ただし、初期値を指定しなくても、そのクラスのconst変数を初期化できることに気付きました。私のクラスには現在、空のデフォルトコンストラクタがあります。
これがintと私のクラスfooの比較です:
あなたが見ることができるように私は防ぐ必要があります
コンパイルから。
C ++の達人からのアイデアはありますか?
c# - 基本コンストラクターに移動し、コピーされた値を上書きするコンストラクターのコピー
コンストラクターの難問、私はこれら 2 つのコンストラクターを持っています。1 つはクラスのコピーを作成するためのもので、もう 1 つは標準コンストラクターです。その中でルールを使用できるように、最初のものを呼び出す必要があります。コードを繰り返す必要はないので、2 つの次元を上書きしないようにする方法を探しています。
2 つの変数を上書きせずに、デフォルトのコンストラクターを呼び出せるようにしたいと考えています。どんな助けでも大歓迎です。
それらがnullかどうかを確認して確認できると思いますが、それが最善の方法ではないようです。
ありがとう
objective-c - ObjectiveCで自分自身を割り当てて初期化するコンストラクターの宣言
重複の可能性:
新しいインスタンスを作成するクラスメソッド
[[class alloc] init]
宣言中のステップをスキップできるようにするobjective-cでコンストラクターをどのように宣言しますか。たとえばFraction* somefrac=[[Fraction alloc] init];
、言う代わりに、言うだけFraction* somefrac
で、コンストラクターが残りを行います。
c++ - コンパイラがデフォルトのコンストラクタを呼び出すのはなぜですか?
以下のエラーが表示されるのはなぜですか?(コンパイラがデフォルトのコンストラクタを呼び出そうとするのはなぜですか?)
java - Springの@Autowiredコンストラクターはデフォルトのコンストラクターが見つかりません
ここでSpring3.0からのいくつかの奇妙な振る舞い。
と
これらのBeanはいずれもapplicationContext.xmlで宣言されていません
したがって、outroJob.printMe();を入力します。正常に動作します...「実行中...」を出力します
しかし、「testeAutowired」Beanを取得しようとすると、次のようになります。
Beanクラスをインスタンス化できませんでした[com.service.schedule.TesteAutowired]:デフォルトのコンストラクターが見つかりません。ネストされた例外はjava.lang.NoSuchMethodException:com.service.schedule.TesteAutowiredです。
問題は、Springが「outroJob」Beanを見つけた場合、TesteAutowiredコンストラクターでそれを自動配線しないのはなぜですか?
それが何をしなければならないかは明らかなようです...
c++ - GoogleTest-コンストラクター宣言エラー
以下に示すように、コンストラクター宣言(引数付き)を使用して、通常のクラスからテストフィクスチャクラスを作成しようとしています。
hello.h
ここで、uint32_tは次のとおりです。uint8_tは次のとおりtypedef unsigned int
です。typedef unsigned char
私のテストフィクスチャクラス:
helloTestFixture.h
上記のコードを実装しようとすると、エラーが発生します。
hello.hファイルで作成されたコンストラクターをhellotestfixture.hファイルに複製しようとしていました。それを行うための方法はありますか?私はそれを多くの方法で実装しようとしましたが、まだ成功していません。これを実装する方法について何か提案はありますか?