【发布时间】:2020-05-22 19:17:19
【问题描述】:
如上所述,我正在尝试创建一个名为 increment_rate 的静态变量名称,它的所有 Employee 类的默认值都是 1.05。
但是,Developer 类(派生自 Employee 类)享有 1.10 的默认 increment_rate(对程序员来说是好事)。
在 Employee 类中,我有一个名为 apply_incr() 的公共方法。每当我调用它时,标准员工(例如基类 Employee,或其他子类,例如 Clerk 或 Janitor)仅享有标准的 increment_rate 1.05,而子类 Developer 应该自动享受 1.10。
在python中,如果基类和派生类都有变量increment_rate,方法解析顺序会默认自动选择派生类的increment_rate。 但是在 C++ 中,我将如何实现这样一个类似的功能,以便它会自动为开发人员应用 1.10,而其他人只能获得 1.05?
因为所有 Clerk 或所有 Janitor 或所有 Employee 都具有相同的 1.05 比率,这就是为什么我选择使用类范围内使用的静态成员,而不是类的每个实例唯一的普通成员。
谢谢!
【问题讨论】:
-
C++ 不是 Python,如果是 Python,它就不会被称为 C++。在 C++ 中,您不能拥有动态解析为正确类的静态变量。您需要创建一个返回所需值的虚函数,并在 Python 中使用变量时使用它。您将需要覆盖每个派生类中的函数。该函数可以从静态变量中获取值,这没有错。
标签: c++ static method-resolution-order