多型とオーバーロード

ポリモーフィック多重定義関数

オーバーロード機能

オーバーロード機能が使いやすさのために、特殊なケースであり、C ++ステートメントは同じ範囲と同様の機能で同じ名前を持ついくつかの機能を可能にするために、これらのパラメータの形式の関数と同じ名前を(パラメータの数を参照し、タイプまたは順序)が異なっていなければなりません同じ機能と異なる機能を実行します。これは、関数をオーバーロードされます。オーバーロードされた関数は、関数を実装するために使用されるなど、データ処理の問題の異なるタイプです。異なる種類のだけでなく、関数の戻り値。

  • オーバーロードされた機能に注意してください。

2つのオーバーロード関数の場合:
1 |引数の数が異なります。
:---:|:---:
2 |異なるパラメータまたはパラメータ型配列の機能の異なる種類。
3 |あなただけの既存の事業者が過負荷状態にすることができ、new演算子を作成することはできません。

関数のオーバーロードを示すために、ここでは簡単な例:

#include<iostream>
using namespace std;

void print(int i)
{
        cout<<"print a integer :"<<i<<endl;
}

void print(string str)
{
        cout<<"print a string :"<<str<<endl;
}

int main()
{
        print(12);
        print("hello world!");
        return 0;
}

上記のコードを実行することによって、特定の印刷プリント(INT)またはプリント(文字列)を呼び出す()の引数に応じ。トッププリント(12)は、印刷(int)を呼び出すために行くだろう、印刷(「こんにちは世界」)は、印刷(文字列)を呼び出すことであろう

ポリモーフィズム

タイプは、サブクラス型の親ポインタへのポインタを割り当てることができます。

  • ポリモーフィックな役割

    ビューの親クラスポイントとして異なるサブクラスオブジェクトは、変化するニーズに適応するために、一般的なプログラミングを行うために、共通のコードを記述し、オブジェクトの異なるサブクラスの違いをマスクすることができます。この割り当ての後、親オブジェクトは、その子オブジェクトに割り当てられた現在の特性に応じて異なる方法で動作することができます。

typedef void(*FUNC)(); //定义一个函数指针来实现对成员函数的继承
 typedef void(*FUNC)(); //定义一个函数指针来实现对成员函数的继承
struct Base  //父类
{
    FUNC fun;
    int B1;
};
struct Derived//子类
{
    Base b1;
    int D1;
};
void fb()      
{
    printf("b1:fun()\n");
}
void fd()       
{
    printf("d1:fun()\n");
}
int main() {
    Base b1;
    Derived d1;

    b1.fun = fb;
    d1.b1.fun = fd;

    Base *p1 = &b1;
    p1-> _fun(); 

    p1 = (Base *)&d1;
    p1->fun(); 

    getchar();
    return 0;
}
  • 多型の主な特徴

継承システム下で1、。継承:オブジェクト指向の1の最も重要な特性です。継承は、新しいクラスは既存のクラスのデータ属性と行動を吸収することができ、そして新しく追加された、親クラスと呼ばれるクラス/基本クラスを既存、新規の機能を拡張する新しいクラス内の既存のクラスから派生しクラスはサブクラス/派生クラスと呼ばれています。

図2に示すように、親クラスの仮想関数の書き換えのサブクラス。

おすすめ

転載: www.cnblogs.com/snowyouth/p/11749912.html