Недавно попробовал следующую программу, и она компилируется, работает нормально и производит ожидаемый вывод вместо любой ошибки времени выполнения.
#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;
}
Если для доступа к классам и/или структурам используется неинициализированный указатель, это undefined, но почему ему также разрешен доступ к статическим членам с использованием нулевых указателей. Есть ли вред в моей программе?