-1
typedef int INT;

1.void f(int x);
2.void f(INT x);

3.g(char (*) [10]);
4.g(char [5] [10]);

の両方のオーバーロードfが存在できます! の両方のオーバーロードgが存在できます!

クラスでこれらの関数をオーバーロードできますか? 基本クラスでは 1,3、派生クラスでは 2,4 として。

4

1 に答える 1

5
both the overloads of `f` can exist?

いいえ、INT の基になる型はint両方ともf同じ関数シグネチャを持ちます。C ++を壊します

both the overloads of g can exist?

番号。配列はポインターに崩壊するためchar [5] [10])char (*) [10]どちらが同じ型になります。

関数オーバーロードの重要なルールは、関数が異なるパラメーター リスト (パラメーターの型または数) を持つ必要がある異なるシグネチャを持つことです。

サンプル コードを参照してください:リンク

于 2013-01-20T08:12:41.370 に答える