【发布时间】:2013-01-07 12:51:52
【问题描述】:
可能重复:
When does invoking a member function on a null instance result in undefined behavior?
我刚刚读到这个问题,答案很好:When does invoking a member function on a null instance result in undefined behavior?
基本上,下面的代码是未定义的行为吗?
struct foo { static void bar() { } };
foo *p = nullptr;
p->bar();
根据链接的帖子,这可以用不同的方式解释,一种是 UB,另一种不是。
在 C++0x 中,从 n3126 开始,歧义仍然存在
这在最终的 C++11 中仍然成立吗?
【问题讨论】:
-
引用链接问题中的答案:“通过空指针调用成员函数总是未定义的行为”。
-
仅仅因为它可能被允许并不意味着你应该这样做。
-
@helami 你误读了你链接的帖子。
-
@Yakk:怎么会这样?他想知道这些答案在 C++11 中是否仍然正确。
-
@Non-StopTimeTravel:Jame's McNellis comment 已经回答了。
标签: c++ c++11 undefined-behavior language-lawyer null-pointer