首页 > 解决方案 > 私有静态成员函数与私有成员函数

问题描述

如果需要在类外部访问静态(例如单例),可以选择公共静态而不是私有静态,而当不需要公开函数时首选私有静态(否则未命名的命名空间会很好) - 在这种情况下,它是唯一的访问通过静态成员函数或其他非静态成员函数

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

标签: c++static

解决方案


当您有一个static成员变量时,您可以像选择非static成员变量一样选择它的访问级别。这里没有什么“特别”的。

我的大多数 privatestatic往往是诸如仅由类内部使用的内置常量之类的东西。

我承认我想不出它们的许多其他用例,但如果任何函数在逻辑上与类的特定实例无关(因此不需要非静态成员访问) ,我也会倾向于创建任何函数——static不过,这可能比某些人沉迷的强迫症更严重。

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

你可以。它是由你决定。

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

当然。我的意思是,这是一个关键字。但是,如果您需要防止标题更改(例如,您正在部署它们),这种“前向兼容性”可能会很有用。可以说,这是将static成员私有化的一个缺点,而实际上并没有太多可靠的好处。再次,这取决于你。


推荐阅读