首頁 > 後端開發 > C++ > 主體

C++ 函式重載和重寫中引用和指標的處理

王林
發布: 2024-04-20 11:51:01
原創
410 人瀏覽過

函數重載時,傳遞參考或指針,所有函數必須使用相同類型的資料。函數重寫時,對於引用成員函數,子類別函數必須引用相同類型變數;對於指向成員函數,子類別函數必須指向相同類型變數。

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;   // 同一类型指针
    };
    登入後複製

實戰案例

假設我們有一個Person 類,它表示一個人的年齡和名字。在該類別中有兩個成員函數:setAge(const int& age)setName(const string& name)

我們建立一個子類別Employee,繼承自Person 類,並重寫setAge 函數,在將年齡設為 age 之前將其加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 函數:

Employee emp;
emp.setAge(20);  // 实际设置为 25
登入後複製

以上是C++ 函式重載和重寫中引用和指標的處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板