何时在 null 实例上调用成员函数会导致 C++11 中出现未定义的行为
When does invoking a member function on a null instance result in undefined behavior in C++11?
可能的重复项:
何时在 null 实例上调用成员函数会导致未定义的行为?
我刚刚读到这个问题,有一个很好的答案:什么时候在空实例上调用成员函数会导致未定义的行为?
基本上,以下代码是未定义的行为吗?
struct foo { static void bar() { } };
foo *p = nullptr;
p->bar();
根据链接的帖子,这可以用不同的方式解释,一个是UB,一个不是。
在 C++0x 中,截至 n3126,歧义仍然存在
这在最终C++11中仍然成立吗?
您链接的问题清楚地表明,在对标准的严格或弱解释中,您显示的代码都是未定义的行为。歧义(可能)只存在于静态函数中(您的问题专门针对非静态函数)。
编辑:歧义仍然存在于日期为2012-01-16的N3337
中,但我没有最终标准的副本。根据问题中的评论,似乎问题 232 的决议从未进入标准,显然是因为措辞过于强硬,使其成为编译时概念而不是预期的未定义行为。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- c++11评估顺序(未定义的行为)
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- "unix" C++预处理器宏未定义 -std=c++11
- C++11 未定义对函数的引用
- 为什么 std::move 未定义,尽管编译器使用 -std=c++11 调用
- C++11 Lambda闭包通过引用涉及一个堆栈变量,该变量离开作用域是允许的,但得到了未定义的行为
- 使用 Clang、libc++ 和 c++11 制作 SFML2 应用程序.对 SFML 库的未定义引用
- C++11:GCC 4.8 静态thread_local std::unique_ptr 未定义的引用
- c++11未使用odr的多个定义
- POCO链接错误,OS X 10.11.2上体系结构x86_64的未定义符号
- 在Mac OS X 10.11中的c++中未定义_main
- C++ 11 未定义提及"__atomic_store_16"
- c++ 11 STL列表=和!= op未定义
- OpenCV 2.3编译问题-未定义的参考- Ubuntu 11.10
- __STDC_VERSION__未在c++ 11中定义
- c++11 lambda代码是否调用了未定义的行为?
- 何时在 null 实例上调用成员函数会导致 C++11 中出现未定义的行为
- c++ 11,枚举类,在c++中未定义引用,与clang++一起工作