printf()
次のようにさまざまな数の引数で使用する場合
printf("Hello");
printf("%d",a);
printf("%d%d",b,c);
これが「オーバーロード」と呼ばれないのはなぜですか(異なるタスク実行で同じ方法を使用)? オーバーロードしている場合、C がオブジェクト指向プログラミング言語と見なされないのはなぜですか?
printf()
次のようにさまざまな数の引数で使用する場合
printf("Hello");
printf("%d",a);
printf("%d%d",b,c);
これが「オーバーロード」と呼ばれないのはなぜですか(異なるタスク実行で同じ方法を使用)? オーバーロードしている場合、C がオブジェクト指向プログラミング言語と見なされないのはなぜですか?
これは可変個引数関数と呼ばれ、オーバーロードではありません。オーバーロードは、オブジェクト指向とは何の関係もありません。
これが「オーバーロード」と呼ばれないのはなぜですか
同じ関数を使用しているため:
int printf(const char *restrict format, ...);
オーバーロードの前提条件の1つは、同じ名前の異なる関数/メソッドを持つことです。ここでは、varargs機能のおかげで非常に用途が広いものの、1つの関数しかありません。
オブジェクト指向プログラミングは、カプセル化、メッセージ パッシング、継承、ポリモーフィズムを含むパラダイムを指します。つまり、オブジェクト指向は、オーバーライドされた関数で を定義することを意味class
します。これは、パラメーターの型に基づいて関数内で異なるアクションを実行するオーバーロードとは異なります。virtual
オーバーロードもオーバーライドもしてprintf()
いません。これは可変長の引数リストです。