問題タブ [delegating-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.

0 投票する
3 に答える
373 参照

c++ - 集約の初期化を伴う C++11 コンストラクターの委譲

デフォルト ctor の独自の定義内で集約の初期化を呼び出すことは可能ですか?

GCC は、次のコードで「エラー: コンストラクターがそれ自体に委任されています」と文句を言います。

memset(this, 0, sizeof(*this))現在ctor本体で使用しています。

0 投票する
2 に答える
833 参照

c++ - 多重継承に一致する関数がない

私は C++ での継承が初めてなので、この主題について学ぶためにいくつかの実験を試みることにしました。

以下のコードは、私が作成しているクラスの階層を示しています。

クラス.h

classes.c

コンパイラは私にメッセージを表示します:

sub_one::sub_one() の呼び出しに一致する関数がありません

sub_one::sub_one() の呼び出しに一致する関数がありません

sub_two::sub_two() の呼び出しに一致する関数がありません

sub_two::sub_two() の呼び出しに一致する関数がありません

何が悪いのかわかりません。

0 投票する
2 に答える
1359 参照

c++ - コピー コンストラクターと const データの初期化の委任

多くのデータ メンバーを持つクラスAがあり、そのうちのいくつかは定数です。すべてのデータ メンバーには適切なコピー コンストラクターがあるため、クラスのコピー コンストラクターをデフォルトに設定します。

A次に、定数データ メンバーの 1 つを初期化する値への参照と値を受け入れるコンストラクターを作成します。

ここopにコピーする必要があり、その後またはコピーの代わりにa初期化する必要があります。a_コピー コンストラクターに委譲してすべてのデータ メンバーを手動で初期化することは避けたいのですが、この場合、const データ メンバーを上書きするにはどうすればよいですか? 例えば:

a明らかに、これらのアプローチはすべて、初期化を2 回試みるため、悪です。

別の解決策は、すべての定数データを基本クラスに移動し、必要なすべての ctor を書き込むことですが、冗長に見えます。

実装するためのよりクリーンな方法はありA(const A&, int a_)ますか?

0 投票する
3 に答える
855 参照

c++ - C++: 委任コンストラクターを使用する場合、「const char *」と「std::string」の選択

次の点を考慮してください。

したがって、定数stringは 1 として扱われconst char *ます。

std::stringしかし、コンストラクターを「プライマリ」にすると何が変わるでしょうか?

std::stringC 文字列関連のオブジェクトを呼び出さずに、オブジェクトが作成され、対応するコンストラクターに渡されると期待できますか?

繰り返しますが、C 文字列コンストラクターが最初に呼び出されました。

この動作は C++ 標準で説明されていますか、それともコンパイラ関連ですか?

これは、テンプレートやオーバーロードされた関数などでも同じように機能しますか?

GCC 7.3.0 (MSYS2 x64) でコンパイルしました。