問題タブ [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.
c++ - 集約の初期化を伴う C++11 コンストラクターの委譲
デフォルト ctor の独自の定義内で集約の初期化を呼び出すことは可能ですか?
GCC は、次のコードで「エラー: コンストラクターがそれ自体に委任されています」と文句を言います。
memset(this, 0, sizeof(*this))
現在ctor本体で使用しています。
c++ - 多重継承に一致する関数がない
私は C++ での継承が初めてなので、この主題について学ぶためにいくつかの実験を試みることにしました。
以下のコードは、私が作成しているクラスの階層を示しています。
クラス.h
classes.c
コンパイラは私にメッセージを表示します:
sub_one::sub_one() の呼び出しに一致する関数がありません
sub_one::sub_one() の呼び出しに一致する関数がありません
sub_two::sub_two() の呼び出しに一致する関数がありません
sub_two::sub_two() の呼び出しに一致する関数がありません
何が悪いのかわかりません。
c++ - コピー コンストラクターと const データの初期化の委任
多くのデータ メンバーを持つクラスA
があり、そのうちのいくつかは定数です。すべてのデータ メンバーには適切なコピー コンストラクターがあるため、クラスのコピー コンストラクターをデフォルトに設定します。
A
次に、定数データ メンバーの 1 つを初期化する値への参照と値を受け入れるコンストラクターを作成します。
ここop
にコピーする必要があり、その後またはコピーの代わりにa
初期化する必要があります。a_
コピー コンストラクターに委譲してすべてのデータ メンバーを手動で初期化することは避けたいのですが、この場合、const データ メンバーを上書きするにはどうすればよいですか? 例えば:
a
明らかに、これらのアプローチはすべて、初期化を2 回試みるため、悪です。
別の解決策は、すべての定数データを基本クラスに移動し、必要なすべての ctor を書き込むことですが、冗長に見えます。
実装するためのよりクリーンな方法はありA(const A&, int a_)
ますか?
c++ - C++: 委任コンストラクターを使用する場合、「const char *」と「std::string」の選択
次の点を考慮してください。
したがって、定数string
は 1 として扱われconst char *
ます。
std::string
しかし、コンストラクターを「プライマリ」にすると何が変わるでしょうか?
std::string
C 文字列関連のオブジェクトを呼び出さずに、オブジェクトが作成され、対応するコンストラクターに渡されると期待できますか?
繰り返しますが、C 文字列コンストラクターが最初に呼び出されました。
この動作は C++ 標準で説明されていますか、それともコンパイラ関連ですか?
これは、テンプレートやオーバーロードされた関数などでも同じように機能しますか?
GCC 7.3.0 (MSYS2 x64) でコンパイルしました。