为什么使用对象实例而不是class :: staticFunction?

时间:2009-09-28 00:17:50

标签: c++ static function

为什么我应该使用对象实例来访问成员函数而不是class :: staticFunction?

(或者为什么不呢?)

4 个答案:

答案 0 :(得分:3)

你被允许对静态函数使用object.function()表示法,但我建议反对它 - 它给出了一个误导性的印象,即函数与特定对象相关联,就像非静态成员函数。使用classname :: function()语法可以清晰准确地描述情况。

答案 1 :(得分:1)

因为该对象包含该方法可能作用的变量。

如果您不使用此工具,则不使用OOP(面向对象编程),而是使用perl模块。

另一方面,有时您提出的建议 - 仅使用静态函数 - 是合适的。

答案 2 :(得分:0)

类的静态成员只保持全局状态。每个实例都有自己的状态。

答案 3 :(得分:0)

  • 实例方法属于他们有权访问的状态/变量的单个实例/对象。

  • 静态方法属于整个类,没有特定的实例/对象,也没有访问任何实例成员的权限。他们只能使用其他静态成员。