ホームページ  >  記事  >  バックエンド開発  >  C++ 関数のオーバーロードと書き換えにおける参照とポインターの処理

C++ 関数のオーバーロードと書き換えにおける参照とポインターの処理

王林
王林オリジナル
2024-04-20 11:51:01407ブラウズ

関数がオーバーロードされると、参照またはポインターが渡され、すべての関数で同じ型のデータを使用する必要があります。関数を書き換える場合、参照メンバー関数の場合、サブクラス関数は同じ型の変数を参照する必要があり、メンバー関数を指す場合、サブクラス関数は同じ型の変数を指す必要があります。

C++ 函数重载和重写中引用和指针的处理

C 関数のオーバーロードと書き換えにおける参照とポインターの処理

関数のオーバーロード

関数のオーバーロードは同じロールで許可されます。複数作成します。ドメイン内の関数は、名前は同じですがパラメータ リストが異なります。参照とポインタについては、次の点に注意する必要があります:

  • ##参照を渡すとき、すべての関数は同じタイプのデータを参照する必要があります:

    void print(const int& num);
    void print(const double& d);

  • ポインターを渡すときは、すべての関数が同じタイプのデータを指す必要があります:

    void print(int* num);
    void print(double* d);

関数オーバーライド

関数オーバーライド 親クラスに同じ名前とパラメーター リストを持つ関数をサブクラスに実装することです。参照とポインターについては、次の点に注意する必要があります:

  • 参照メンバー関数の場合、サブクラス関数は同じ型の変数を参照する必要があります:

    class Parent {
    public:
      void setAge(const int& age);
    };
    
    class Child : public Parent {
    public:
      void setAge(const int& age) override;  // 同一类型引用
    };

  • メンバー関数を指す場合、サブクラス関数は同じ型の変数を指す必要があります:

    class Parent {
    public:
      int* getPtr();
    };
    
    class Child : public Parent {
    public:
      int* getPtr() override;   // 同一类型指针
    };

実用的なケース

人の年齢と名前を表す A

person クラスがあると仮定します。このクラスには、setAge(const int& age)setName(const string& name) という 2 つのメンバー関数があります。

サブクラス

Employee を作成し、Person クラスから継承し、setAge 関数をオーバーライドして年齢を に設定します。 年齢までに 5 歳まで。

class Person {
public:
    void setAge(const int& age);
    void setName(const string& name);
};

class Employee : public Person {
public:
    void setAge(const int& age) override;  // 重写setAge函数
};

// Employee 类中的 setAge 函数
void Employee::setAge(const int& age) {
    Person::setAge(age + 5);  // 调用父类setAge函数
}

これで、

Employee オブジェクトを作成し、オーバーライドされた setAge 関数を使用できます。

以上がC++ 関数のオーバーロードと書き換えにおける参照とポインターの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。