为什么需要使用static关键字? 编译器为什么不能推断出是否需要使用'static'? 如下: 如果我在没有访问非静态成员数据的情况下编译此函数,是可以的 -> 静态函数。否则 -> 非静态函数。 为什么编译器不会自动推断呢?
静态或非静态属性会影响函数类型。非静态成员函数有一个隐含的“this”参数,而静态函数没有,这是其中之一的例子。换句话说,静态和非静态成员函数之间存在重大的定性差异。编译器无法“推断”这一点。这是作者意图的问题。如果我希望(并且需要)我的函数是非静态的,即使它不访问类的任何非静态成员,我也会将其设置为非静态。如果编译器因为函数不访问类的任何非静态成员而突然决定将我的非静态函数变为静态的,在一般情况下它会破坏代码的功能。