最近、次のプログラムを試してみましたが、コンパイルされ、正常に実行され、実行時エラーの代わりに期待される出力が生成されます。
#include <iostream>
class demo
{
public:
static void fun()
{
std::cout<<"fun() is called\n";
}
static int a;
};
int demo::a=9;
int main()
{
demo* d=nullptr;
d->fun();
std::cout<<d->a;
return 0;
}
初期化されていないポインターを使用してクラスおよび/または構造体メンバーにアクセスする場合の動作は未定義ですが、null ポインターを使用して静的メンバーにアクセスできるのはなぜですか。私のプログラムに害はありますか?