最佳答案
这段代码是有效的(和已定义的行为)吗?
int &nullReference = *(int*)0;
G + + 和 clang + + 在没有任何警告的情况下编译它,即使使用 -Wall
、 -Wextra
、 -std=c++98
、 -pedantic
、 -Weffc++
..。
当然,引用实际上不是 null,因为它不能被访问(这意味着取消对 null 指针的引用) ,但是我们可以通过检查它的地址来检查它是否为 null:
if( & nullReference == 0 ) // null reference