可能重复:
何时在空实例上调用成员函数会导致未定义的行为?
像这样的任何东西:
class Class {
public:
void Method()
{
//empty;
}
};
Class* object = 0;
object->Method();
在 C++ 中是未定义的行为,因为通过空指针调用非静态成员函数在形式上是非法的。有关C++ 标准引用的详细解释,请参阅此答案。我很清楚理论部分,这个问题不是关于理论的,所以它不是那个问题的重复。
在所有实现中,我都知道上面的代码或其等效代码不会导致任何可观察到的问题 - 因为成员函数不访问对象,所以该方法将被很好地调用。
我可以有任何真实的例子,其中相同的设置会导致实际的可观察到的问题吗?