【发布时间】:2010-07-05 02:12:28
【问题描述】:
我今天正在学习 C++ 中的静态类函数,但我真的不明白它们有什么用?谁有一些可以成功应用的好例子?
谢谢,博达·赛多。
【问题讨论】:
我今天正在学习 C++ 中的静态类函数,但我真的不明白它们有什么用?谁有一些可以成功应用的好例子?
谢谢,博达·赛多。
【问题讨论】:
类的静态成员函数只是普通(非成员)函数。你知道普通函数有什么用,对吗?因此,出于同样的原因,静态成员函数也适用于同样的事情。
只是有时普通函数与类的关系很紧密,所以将其声明为类的静态成员而不是将其声明为完全独立的独立函数是有意义的。它可以帮助您表达函数与类具有紧密关系的事实。此外,这赋予该函数对类内部的完全访问权限 - 对其私有成员和受保护成员。
后者实际上使得使用静态成员函数实现一些有用的编程习惯用法和模式成为可能。例如,搜索“静态构造函数”习语。
【讨论】:
this参数,所以如果你需要一个类的实例来访问,你必须自己显式地将它传递给函数。
A 和静态方法s() 和私有成员p,传入的实例允许s() 访问p。或者s() 可以实例化A 并填充p。那种东西。
静态类类似于命名空间,但它们提供保护(受保护和私有),并且可以转换为模板(是的,裸函数也可以,但它们有一些限制,有时使包装类模板更容易甚至是必要的) .
【讨论】:
静态成员函数可用于对静态常量数据成员执行重要的初始化。例如,您可能有一个在某个类中使用的静态常量容器。静态成员函数可用于创建容器实例,该实例被返回并复制到静态常量数据成员中。
【讨论】:
考虑“全球性”。正如您所学习的,一个非静态函数对单个对象进行操作,而一个静态函数由一个类的所有对象共享 - 那么......所有这些对象有什么共同点?
这取决于您的班级,但请考虑“摘要信息”。想想数据。想想类的所有对象的共同点。也许每个都有一个特定于自身的运行总计,但您还想要一个全局总计?沿着这些思路思考......
【讨论】: