【问题标题】:private static member function vs private member function私有静态成员函数与私有成员函数
【发布时间】:2020-03-22 21:54:39
【问题描述】:

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

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

【问题讨论】:

  • 非静态成员函数需要传递一个额外的 pointer-to-instance 参数,这代表了一些开销。在某些性能关键型应用中,这种开销可能很重要。

标签: c++ static


【解决方案1】:

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

我的大部分私人statics 往往是诸如仅由类内部使用的内置常量之类的东西。

我承认我想不出他们的许多其他用例,但我也倾向于使 any 函数 static 在逻辑上与类(因此不需要非静态成员访问)——这可能比某些人沉迷的更强迫症。

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

你可以。这取决于你。

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

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

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 2014-09-02
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2015-04-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多