前情提要
在之前的文章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成员会有问题”,是指什么问题?会有什么问题?
甚至有很多网友是从其他公众号看到了我这篇文章,然后特地赶过来追问的。比如:
原文地址:https://cloud.tencent.com/developer/article/2018081 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。