为什么不直接在上一篇文章C ++中使用静态,但不直接实例化对象?发行后,我收到了很多问题
主要集中在本段中:
如果有子类继承此父类,以扩展为新的子类,例如监视器显示类具有开关状态,同时扩展了亮度的成员。但是,父亲的静态成员变量和儿子分享,他们的ISON成员会遇到问题。
每个人都评论说:“ ISON成员会遇到问题。”有什么问题?有什么问题?
好的,让我解释一下。在这个示例中,Ison是父母班级Singleton中的静态成员。在子类监视器继承父类之后,ISON也是相同的。如果父类代表的单个情况调用on on函数以将ISON更改为true。然后将修改子类的ISON,因为它们确实是同样的变量!不要相信您,请参阅:
单案继承写作1:
输出:
但是,这两个类别应代表不同资源的“单个示例”,这不应彼此影响。所以我说的不是汇编会有问题,而是使用逻辑上有问题。您可以重新定义ISON变量并相关的读写功能的解决方案,以此方式将父亲和儿子分解。但是,如果您想这样更改,使用继承有什么意义?根本不需要继承它。
好吧,继续观看。
单案继承写作2:
目前有些青少年可能会想到。我的最后一篇文章是介绍Meyers的Singleton。因此,我想将ISON更改为本地静态变量,所以可以吗?
尽管它是局部静态变量,但也有问题。但是,这种写作的父子仍然由同一ISON静态变量!编译和运行,但输出仍然是:
单案继承写作3:
请注意,并不是说静态局部变量的使用是Meyers'Singleton。
您接近事实,但这是错误的。这不是Meyers的Singleton。输出仍然是:
单案继承写作4:
男孩:“我意识到”
编译并再次运行后,输出:
是的,这是正确的写作方式。注意迈耶斯的单身人士。除了局部静态变量和数据成员之外,如果要读取和写入数据成员,则必须像普通类一样编写普通成员函数,而不是不静态的成员函数才能操作。如果您不想编写这些函数会员资格功能,然后您直接将单个情况下的数据成员声明为公共...
以上是这次共享的所有内容。如果您想了解更多信息,欢迎来到公共帐户:C语言学习联盟,每日干货共享
原始:https://juejin.cn/post/7096688989832541798