繁体   English   中英

C ++覆盖继承的静态const变量的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM