3

私はいつも自分自身にこの質問をしました。Cのprintf()が任意の数のパラメーターを受け入れるように設計されているのはなぜですか?はいの場合、純粋な構造化言語には、メソッドのオーバーロードのようなオブジェクト指向言語の概念がどのように含まれていますか?

4

3 に答える 3

7

それは過負荷ではありませんか?

いいえ、Cにはオーバーロードはありません。これは「可変個引数関数」と呼ばれます。

いいえ、C ++で表示され、Cがないにもかかわらず、メソッドのオーバーロードはオブジェクト指向の概念ではありません。これは、オブジェクト指向ではないPrologなどのかなり古いプログラミング言語で目立つように機能します。

于 2012-09-26T19:51:50.757 に答える
2

オーバーロードではありません.可変数の引数をとるメソッドは、可変引数関数と呼ばれます。

wiki の可変長メソッド

于 2012-09-26T19:52:05.657 に答える
2

これは varargs (引数の可変数) と呼ばれ、C の初期の頃から存在していました。

これはオーバーロードとは関係ありません。

ある意味では、これは単なる「オープン プロトタイプ」であり、プロトタイプが現在ほど厳密に使用されていなかったという事実を表しています。この分野での C の柔軟性は、パラメーターが渡される方法に由来します。パラメーターのクリーンアップは呼び出し元の責任であり、呼び出し元は必要な時間にどれだけのスペースを占有しているかを知ることができます。

同様の手法は、競合する呼び出し規約 (Pascal 呼び出し規約など) では (簡単に) 不可能でした。

于 2012-09-26T19:52:14.450 に答える