タグ付けされた質問 「constructor」

5
Scalaの上位の型とは何ですか?
あなたはウェブ上で以下を見つけることができます: より高い種類の型==型コンストラクタ? class AClass[T]{...} // For example, class List[T] 定義に準拠する型を抽象化するため、これはより高い種類の型であると言う人もいます。 上位の種類は、他の型を取り、新しい型を構築する型です これらはタイプコンストラクターとも呼ばれます。(たとえば、Scalaでのプログラミング)。 より高い種類の型==型コンストラクターを型パラメーターとして受け取る型コンストラクター? 論文Generics of a Higher Kindで、あなたは読むことができます ...タイプを抽象化するタイプを抽象化するタイプ(「より種類の高いタイプ」)... " それはそれを示唆しています class XClass[M[T]]{...} // or trait YTrait[N[_]]{...} // e.g. trait Functor[F[_]] より親切なタイプです。 したがって、これを念頭に置いて、型コンストラクタ、より高い種類の型、および型コンストラクタを型パラメータとして取る型コンストラクタを区別することは困難です。したがって、上記の質問です。

7
2つのゼロ引数コンストラクターを区別する慣用的な方法
私はこのようなクラスを持っています: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; 通常私countsは示されているようにデフォルト(ゼロ)配列を初期化したいと思います。 ただし、プロファイリングによって特定された特定の場所では、配列が上書きされることがわかっているため、配列の初期化を抑制したいのですが、コンパイラーはそれを理解するのに十分なほどスマートではありません。 そのような「セカンダリ」ゼロ引数コンストラクタを作成する慣用的で効率的な方法は何ですか? 現在、次のuninit_tagように、ダミー引数として渡されるタグクラスを使用しています。 struct uninit_tag{}; struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} event_counts(uninit_tag) {} // more stuff }; 次に、構築event_counts c(uninit_tag{});を抑制したいときのように、no-initコンストラクターを呼び出します。 私は、ダミークラスの作成を含まない、または何らかの方法でより効率的なソリューションなどを受け入れています。

6
C ++のオーバーロードされたコンストラクターによる不明な型の変数の初期化
主にpythonのバックグラウンドから来ているので、C ++で型を操作するのに多少苦労しました。 異なる型をパラメーターとして受け取るいくつかのオーバーロードされたコンストラクターの1つを介してクラス変数を初期化しようとしています。autoキーワードの使用は変数の自動宣言に使用できることを読みましたが、私の場合、コンストラクターが選択されるまで初期化されません。しかし、コンパイラーは初期化しないことに満足していませんvalue。 class Token { public: auto value; Token(int ivalue) { value = ivalue; } Token(float fvalue) { value = fvalue; } Token(std::string svalue) { value = svalue; } void printValue() { std::cout << "The token value is: " << value << std::endl; } }; Pythonでは、次のようになります。 class Token(): def …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.