私有静态成员函数与私有成员函数

时间:2019-11-27 10:54:35

标签: c++ static

如果需要在类之外访问静态,则可以选择公共静态而不是私有静态(例如,单例),而当不需要公开该函数时,首选私有静态(否则可以使用未命名的名称空间就可以了)-在这种情况下它只能通过静态成员函数或其他非静态成员函数访问

但是,我试图获得一个核心思想,为什么人们会选择私有静态而不是私有成员函数? 当然,两者都可以访问该类的私有成员(或任何传递的对象),而静态成员明确要求传递一个对象,但是为什么我不能通过将其设为私有的非静态来保持设计开放成员函数,即使它不需要访问私有成员(就像静态成员函数一样)。这样,即使将来我需要访问一些私有成员,也可以避免将静态转换为非静态mem函数-我知道这不是什么大问题/更改,但仍然可以有人给我一个清晰的主意,以了解何时以及为什么要选择一个?

1 个答案:

答案 0 :(得分:1)

当您拥有一个static成员变量时,您以与非static成员变量相同的方式选择其访问级别。这里没有“特殊”内容。

我的大多数私人static都倾向于像内置常量之类,仅由类的内部使用。

我承认我无法为它们想到许多其他用例,但是如果在逻辑上与特定实例无关的话,我也会倾向于使用 any 函数static类(因此不需要非静态成员访问权限)—这可能比某些人沉迷的强迫症要多一些。

  

即使我不需要访问私有成员(就像静态成员函数一样),为什么我也不能通过将其设为私有的非静态成员函数来保持设计开放状态

可以。由您决定。

  

这样,即使将来我需要访问一些私有成员,也可以避免将静态转换为非静态mem func

好的。我的意思是,它是一个关键字。但是,如果您需要避免更改标头(例如,正在部署标头),则这种“向前兼容”可能会很有用。可以说,这是将static成员设为私有的不利之处,实际上并没有太多好处。再次由您决定。