-2

C++ で、必要な関数をコンパイラに自動的に決定させる方法はありますか? あなたは皆それを知っています:

void F (int i);
void F (char *f);
...
int k = 0;
F(k);

char *f = "0";
F(f);

...またはテンプレート経由:

template <typename T> 
void F(T i);
...
F(k);
F(f);

クラスレベルでのアナロジーとは?必要なクラスをコンパイラに決定させる方法はありますか?

4

2 に答える 2

3

特定のクラスのオブジェクトを宣言する必要があるため、実際には必要ありません。ただし、基本クラスと、基本クラスから継承する他のクラスがある場合は、仮想関数を使用でき、基本クラスへのポインターまたは参照がある場合でも、コンパイラーは正しいメンバー関数を選択します。

通常、ポリモーフィズムと呼ばれるのは、実際にはこの最後の部分です。関数で行っていることは、実際にはオーバーロードです。

于 2012-08-20T11:51:43.250 に答える
1

いいえ、関数とは異なり、同じ名前の 2 つのクラスを持つことはできません。

テンプレート パラメーターを使用してクラスをパラメーター化することは可能ですが、これは多少似ていますが、同じではありません。または、より一般的には、渡すパラメーターに応じて、いくつかのタイプのいずれかのオブジェクトを作成するファクトリを作成できます。後者の場合、オブジェクトは通常、共通のスーパークラスを拡張します。

于 2012-08-20T11:51:14.760 に答える