前情提要
在之前的文章C++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?发布以后,陆陆续续收到很多网友留言提问,问题主要集中在文中的这一段:
class Singleton {
public:
static void on() {Singleton::isOn = true;}
static void off() {Singleton::isOn = false;}
static bool state() {return Singleton::isOn;}
private:
static bool isOn;
};
class Monitor: public Singleton {
public:
static void addBrightness(int val) { brightness += val;}
static void subBrightness(int val) { brightness -= val;}
static int getBrightness() { return brightness;}
private:
static int brightness;
};
如果有子类继承这一父类,来拓展成新的子类,比如Monitor显示器类有开关状态,同时扩展了一个亮度的成员。但是父子类的static成员变量是共享的,其isOn成员会有问题。
大家纷纷留言评论:“其isOn成员会有问题”,是指什么问题?会有什么问题?
甚至有很多网友是从其他公众号看到了我这篇文章,然后特地赶过来追问的。比如: