如果需要在类之外访问静态(例如单例),则可以选择公共静态而不是私有静态,而当函数不需要公开时(否则未命名的命名空间会很好),则首选私有静态静态--在这种情况下,它只能通过静态成员函数或其他非静态成员函数进行访问。
然而,我试图了解为什么人们会选择私有静态而不是私有成员函数的核心概念?当然,两者都可以访问类的私有成员(或传递的任何对象),静态成员显式地要求传递一个对象,但是为什么我不能让它成为私有的非静态成员函数,即使它不需要访问私有成员(就像静态成员函数一样)。这样的话,即使将来我需要访问一些私人成员,我也可以避免将静态成员转换为非静态的members -我知道这并不是什么大不了的事情/改变,但谁能给我一个清晰的概念,说明何时以及为什么选择一个而不是另一个呢?
发布于 2019-11-27 10:57:53
当您有一个static成员变量时,您选择其访问级别的方式与非static成员变量的方式相同。这里没有什么“特别”。
我的大多数私有static倾向于像内置常量这样的东西,这些常量只供类的内部成员使用。
我承认我不能为它们想出很多其他的用例,但是如果函数static在逻辑上与类的一个特定实例无关(因此不需要非静态的成员访问),那么我也倾向于做任何函数--这可能比一些人所沉溺的OCD更多。
为什么我的设计不能保持开放,使它成为一个私有的非静态成员函数,即使它不需要访问私有成员(就像静态成员函数一样)
你可以的。这取决于你。
通过这种方式,即使将来需要访问一些私有成员,我也避免了将
转换为非静态mem。
好的。我是说,只有一个关键词。但是,这种“前向兼容性”可能是有用的,如果您需要防止您的头更改(例如,您正在部署它们)。可以说,这是让static成员成为私有成员的一个缺点,因为这里并没有太多的好处。再说一次,这取决于你。
https://stackoverflow.com/questions/59068563
复制相似问题