静态函数与const函数

baa*_*h05 19 c++ static-methods

我在看一个成员函数

int funct(int x) const; 
Run Code Online (Sandbox Code Playgroud)

而且我想知道是否

static int funct(int x); 
Run Code Online (Sandbox Code Playgroud)

会更好.

如果成员函数不使用任何成员变量,那么它应该是静态的.有什么东西可以阻止这个吗?

Uri*_*Uri 23

假设这是C++,声明为const的函数表明它不打算更改调用它的实例上的数据成员,即this指针.既然有办法逃避这一点,那就不是保证,而只是宣言.

静态函数不在特定实例上运行,因此不采用"this"指针.因此,它是一种非常天真的"常量".

如果您的方法不需要绑定到特定实例,则将其设置为静态是有意义的.

但是,如果您的方法是多态的 - 也就是说,您根据调用它的对象的实例提供了不同的实现,那么它不能是静态的,因为它依赖于特定的实例.


Ric*_*ard 8

如果成员函数不使用任何成员变量,那么通常值得问一个问题:
"这首先需要成为成员函数吗?"