是否将空指针强制转换为引用定义的行为?

问题描述 投票:0回答:1

我有这段C++代码:

int main() {
    int* ptr = nullptr;
    int& ref = reinterpret_cast<int&>(ptr);
    return ref;
}

在两个编译器上使用

-Wall -Wextra -pedantic
进行编译时,Clang 和 GCC 都不会诊断强制转换,只有 GCC 会诊断我取消引用空指针。

ptr
ref
的转换是否是未定义的行为?或者只是从返回语句UB中的
ref
读取?

c++ casting reference null undefined-behavior
1个回答
0
投票

当然是这样,参考文献永远不应该是

nullptr
。您使用
reinterpret_cast
的事实应该已经告诉您需要了解的所有信息。

© www.soinside.com 2019 - 2024. All rights reserved.