函數重載時,傳遞參考或指針,所有函數必須使用相同類型的資料。函數重寫時,對於引用成員函數,子類別函數必須引用相同類型變數;對於指向成員函數,子類別函數必須指向相同類型變數。
函數重載允許在同一作用在域內建立具有相同名稱但參數清單不同的多個函數。對於引用和指針,我們需要注意以下幾點:
傳遞引用時,所有函數必須引用相同類型的資料:
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中文網其他相關文章!