考虑以下。
struct A {
static const int X = 1;
static void printX() {std::cout << "X " << X << std::endl; };
};
struct B: public A {
static const int X = 2;
};
int main(argc argv){
B b;
b.printX();
}
如何强制b.printX()
打印值 2?
常量和方法都必须是静态的。因此,虚方法不适合。
对于那些认为他们比我更了解我的任务并希望看到我重新思考它的人,我将解释我努力的目标:)
想象一下具有基于一组静态常量的行为的类。实现具有不同常量集并因此具有不同行为的子类的最简单方法是从具有特定常量值集的前一个类派生类。可以使用虚函数来解决该任务。当然可能,毫无疑问。但是根据模型化实体的理论,这种解决方案将不是很纯粹。在这种情况下,虚拟方法的使用将比正确的实现更像是一种技巧。
例如,IR 通道具有不同的脉冲持续时间和封装结构时序。用一组特定的常量值定义一组子类(不同的 IR 通道实现)很方便。这些值是静态的,因为它们对于 class 和 const 的每个对象都是通用的,因为它们仅在编译时需要。并且由于基类和子类的内部实现略有不同,它们之间的最佳关系是super class - child class
.
现在是我原来的问题的理由吗?