这里是一个小测试程序:
#include <iostream>
class Test
{
public:
static void DoCrash(){ std::cout<< "TEST IT!"<< std::endl; }
};
int main()
{
Test k;
k.DoCrash(); // calling a static method like a member method...
std::system("pause");
return 0;
}
在VS2008 + SP1 (vc9)中,它可以编译通过:控制台只会显示“TEST IT!”。
据我所知,静态成员方法不应该在实例对象上被调用。
- 我错了吗?从标准的角度来看,这段代码是正确的吗?
- 如果是正确的,为什么呢?我找不到为什么允许这样做,或者也许是为了帮助在模板中使用“静态或非静态”方法?