C++ ではジェネリクスが実際には存在しないことは知っていますが、. を使用してシミュレートできますtemplate
。コードをビルドすると、コンパイラはコードを前処理し、オブジェクト宣言で指定された実際の値に置き換えられたジェネリック値を使用して新しいコードを生成します。次に、この新しいコードが実際にコンパイルされます。たとえば、A
次のようなクラスがあるとします。
template<class T>
class A
{
T f();
};
そして、私たちが持っているコードのどこか別の場所A<int> a;
. コンパイルされる実際のコードは次のようになります。
class A
{
//Replaces T by int in the pre-processing
int f();
};
この全体の紹介の後、ポイントに行きましょう。
私の質問は次のとおりです。
- C# はジェネリックを C++ と同じように扱いますか? そうでない場合、どのように?
- 彼らは特別なタイプですか?
- それらは実行時またはコンパイル時に解決されますか?
- アクティベーション レジスタのジェネリック型用に予約されているスペースはどれくらいですか?