-1

C ++での関数のオーバーロードとオブジェクト指向の間に関係はありますか?

もしそうなら、その関係は何ですか?

4

3 に答える 3

4

ほとんどのオブジェクト指向システムの機能の1つはある種のポリモーフィズムであり、オーバーロードはある種のポリモーフィズム(具体的にはアドホック多相性)も提供するという意味で、これらは関連しています。

C ++は、主に3つの方法でポリモーフィズムを提供します。

  • オーバーロード(アドホック多相性の形式)
  • テンプレート(アドホック多相性の形式でもあります)
  • クラス継承(各クラスをタイプとして定義することによるサブタイプポリモーフィズムの形式)

そして、これらの機能のそれぞれが、それらを関連させるある種のポリモーフィズムを提供するという事実です。

于 2012-09-18T00:16:02.603 に答える
3

これらは別個の概念です。

オーバーロードとは、前述のように、タイプを使用して関数を決定することです。

オブジェクト指向プログラミングは、モデル化されたものの概念によるデータと機能の論理的な編成です。多くの場合、現実世界のものまたはその抽象化です。

同様の問題を解決しようとする言語は、多くの場合、両方の機能を提供しますが、一方は一方のツールを自由に使用でき、もう一方は害を及ぼすことなく使用できます。

于 2012-09-18T00:11:31.957 に答える
-1

関数のオーバーロードは、オブジェクト指向の最も深いアイデアの1つに関連しています。つまり、データ型が関数または演算子の動作を決定するというアイデアです。

関連するアイデアは、演算子のオーバーロードのアイデアです。演算子(+や-など)はさまざまなデータ型に適用でき、演算子は関連する型に対して正しいことを行います。

独自の型の演算子関数を作成することもできます。

コア言語で演算子のオーバーロードを確認できます。2つの整数を加算し、2つの浮動小数点数を加算するには、異なるマシン命令が必要です。

C ++コンパイラは、式のタイプに応じて、さまざまな低レベルルーチンを実行します。

a + b

引数のタイプが変更されると、コンパイラーは異なる命令を生成します。

繰り返しになりますが、このアイデアはオブジェクト指向に深く根付いたものです。関連するデータのタイプによって、関数の動作が決まります。

しかし、オーバーロードはこのアイデアの完全な実装ではありません。タイプ情報は、コンパイル時に不完全に認識される場合があります。そこで、ポリモーフィズムが登場します。

于 2012-09-18T00:02:18.980 に答える