函数重载时,传递引用或指针,所有函数必须使用相同类型的数据。函数重写时,对于引用成员函数,子类函数必须引用同一类型变量;对于指向成员函数,子类函数必须指向同一类型变量。

C++ 函数重载和重写中引用和指针的处理
函数重载
函数重载允许在同一作用域内创建具有相同名称但参数列表不同的多个函数。对于引用和指针,我们需要注意以下几点:
-
传递引用时,所有函数必须引用相同类型的数据:
void print(const int& num); void print(const double& d);
-
传递指针时,所有函数必须指向相同类型的数据:
立即学习“C++免费学习笔记(深入)”;
void print(int* num); void print(double* d);
函数重写
函数重写是在子类中实现父类中具有相同名称和参数列表的函数。对于引用和指针,我们需要注意:
2.0修改说明:1.重写产品,下载模块,无限级分类2.将产品,下载,图片,新闻进行伪静态处理。3.取掉了原有的风格模块,下次更新加模板系统和自定义标签。4.增加缓存机制,减少对数据库的调用,缓存默认30分钟。
-
对于引用成员函数,子类函数必须引用相同类型的变量:
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









