dec*_*iar 2 c++ null standards pointers reference
在C++标准中是否有任何部分显示NULL引用是不正确的?我试图展示我的讲师(这是为了我正在评分的作业)以下表达式是未定义的行为:
AClass* ptr = 0;
AClass& ali = *ptr;
std::cout << "\n" << (AClass*) &ali << '\n';
Run Code Online (Sandbox Code Playgroud)
我看到的违规是取消引用空指针,然后引用空引用.在一个他正在使用作为一个程序正确例如,他在比较解除引用指针参考的返回:
(AClass*) &ali != (AClass*) 0
Run Code Online (Sandbox Code Playgroud)
作为对象有效性的测试.我认为这是完全未定义的行为; 我想从标准中找到一个对我的解释更具体的引用.
如果我错了,请告诉我出错的地方.
§8.5.3/ 1:"声明为T&的变量,即"对类型T的引用"(8.3.2),应由类型为T的对象或函数或可由对象初始化.转换成T."
上面的代码没有使用类型T的对象或函数或可以转换为T的对象初始化引用.违反了"应该".此时,唯一的问题是它是否是未定义的行为,或者这是否符合可诊断规则,在这种情况下,编译器将需要提供错误消息.无论哪种方式,它显然是错误的.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |