我知道如果一个函数是一个实用函数,或者我们必须在一个单例类中使用它来访问私有静态成员,我们应该在一个类中将一个函数声明为静态。
但除此之外,静态函数也提供任何类型的编译器优化,因为它没有传递“this”指针?为什么不通过已经实例化的类对象使用实用程序功能?或者只是将实用函数作为静态函数的最佳实践?
提前致谢。
答案 0 :(得分:1)
启用优化后,编译器可能会完成“非传递此”优化。正如我所看到的,静态函数具有相当惯用的用途:
this
并让编译器强制执行它。有时它是有道理的。例如,如果您有一个需要两个实例的可交换操作,那么采用这两个实例的静态函数会强调(在我看来)该操作是可交换的。当然,在许多情况下,您宁愿超载操作员。一般情况下,静态函数会通过在一个普通函数前面添加一个类的名称来简化命名空间和“朋友”的混乱,大概是因为它们都是紧密相关的。
答案 1 :(得分:1)
静态存在将方法与类关联,而不是:
静态说'从概念上说这是与这个类绑定/关联的东西,但它不依赖于该类的任何实例'。
在更正式的术语中:静态成员函数与在类之外以类似方式声明的函数相同,除了它是该类的命名空间的一部分,并且它具有对该类的私有/受保护数据的访问权限成员。
回到你的问题: