ここに小さなテストプログラムがあります:
#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!」と表示されるだけです。
私の知る限り、インスタンス化されたオブジェクトで静的メンバー メソッドを呼び出すべきではありません。
- 私が間違っている?このコードは標準的な観点から正しいですか?
- 正しいとすれば、それはなぜですか。なぜそれが許可されるのかわかりませんか、それともテンプレートで「静的かどうか」メソッドを使用するのに役立つのでしょうか?