[英]C++ overriding the value of inherited static const variables
我有一个这样的CPP类:
class A{
protected:
static const int _a = 0, _b = 0, _c = 0;
std::string _data;
public:
void myMethod(); //method that changes _data based on the value of _a, _b and _c
};
如果我要创建,请说:
Class B : public A{};
如何更改_a
, _b
和_c
的值以更改myMethod
的行为? 即使我再次声明它们, myMethod
仍将使用class A
而不是class B
。
如果要更改这3个数字,是否需要覆盖整个myMethod
函数?
编辑: myMethod()
是public
,不是private
。
您不能直接更改const
静态成员,但是可能想要的是virtual
getA(), getB(), getC()
方法。
然后,您的A::myMethod()
实现使用getter而不是直接访问静态成员。
在您的B
类中,您可以重写get
方法以返回不同的值(也许是从新声明的静态变量中读取的值或有意义的值),然后A::myMethod()
将自动选择它们。
您不能更改常量的值,因为名称表示const
。 您只能初始化它们。
class A{
protected:
static const int val1, val2, val3;
public:
void myMethod();
};
const int A::val1 = 9;
const int A::val2 = 5;
const int A::val3 = 4;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.