Are static variables in a base class shared by all derived classes?

前端 未结 7 1953
梦如初夏
梦如初夏 2020-11-28 04:56

If I have something like

class Base {
    static int staticVar;
}

class DerivedA : public Base {}
class DerivedB : public Base {}

Will bot

7条回答
  •  [愿得一人]
    2020-11-28 05:51

    To ensure that each class has its own static variable, you should use the "Curiously recurring template pattern" (CRTP).

    template 
    class Base
    {
        static int staticVar;
    };
    
    template  int Base::staticVar(0);
    
    class DerivedA : public Base {};
    class DerivedB : public Base {};
    

提交回复
热议问题