使用派生 class 的静态成员而不是基础 class
Using a static member from a derived class instead of the base class
如上所述,我正在尝试创建一个名为 increment_rate 的静态变量名称,它对所有员工 class.
的默认值为 1.05
但是,开发人员 class(派生自员工 class)享有默认的 increment_rate 1.10(对程序员来说是的)。
在 Employee class 中,我有一个名为 apply_incr() 的 public 方法。每当我调用它时,标准员工(例如基础 class 员工,或其他子 class 员工,例如文员或看门人)仅享有标准 increment_rate 1.05,而子 class 员工class 开发者应该自动享受 1.10。
在python中,如果基础class和派生[=],方法解析顺序将默认自动选择派生-class的increment_rate 31=] 有变量 increment_rate。
但是在 C++ 中,我如何实现这样一个类似的功能,以便它会自动为开发人员应用 1.10,而其他人只能获得 1.05?
因为所有 Clerk 或所有 Janitor 或所有 Employee 都具有相同的比率 1.05,这就是为什么我选择使用 class 范围内使用的静态成员,而不是每个成员唯一的普通成员class.
的实例
谢谢!
我不确定为什么需要静态变量。假设 apply_incr()
不是静态的,你很可能会这样:
class Employee {
public:
virtual double getIncrementRate() const { return 1.05; }
}
class Developer : Employee {
public:
virtual double getIncrementRate() const override { return 1.10; }
}
如上所述,我正在尝试创建一个名为 increment_rate 的静态变量名称,它对所有员工 class.
的默认值为 1.05但是,开发人员 class(派生自员工 class)享有默认的 increment_rate 1.10(对程序员来说是的)。
在 Employee class 中,我有一个名为 apply_incr() 的 public 方法。每当我调用它时,标准员工(例如基础 class 员工,或其他子 class 员工,例如文员或看门人)仅享有标准 increment_rate 1.05,而子 class 员工class 开发者应该自动享受 1.10。
在python中,如果基础class和派生[=],方法解析顺序将默认自动选择派生-class的increment_rate 31=] 有变量 increment_rate。 但是在 C++ 中,我如何实现这样一个类似的功能,以便它会自动为开发人员应用 1.10,而其他人只能获得 1.05?
因为所有 Clerk 或所有 Janitor 或所有 Employee 都具有相同的比率 1.05,这就是为什么我选择使用 class 范围内使用的静态成员,而不是每个成员唯一的普通成员class.
的实例谢谢!
我不确定为什么需要静态变量。假设 apply_incr()
不是静态的,你很可能会这样:
class Employee {
public:
virtual double getIncrementRate() const { return 1.05; }
}
class Developer : Employee {
public:
virtual double getIncrementRate() const override { return 1.10; }
}