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"指针.因此,它是一种非常天真的"常量".
如果您的方法不需要绑定到特定实例,则将其设置为静态是有意义的.
但是,如果您的方法是多态的 - 也就是说,您根据调用它的对象的实例提供了不同的实现,那么它不能是静态的,因为它依赖于特定的实例.