通过 glvalue 引用不相关类型的对象或未初始化的对象
C++-Undefined-Behavior-24
glvalue 的类型与其引用的对象类型不同且没有继承关系,或引用的对象未初始化,会导致未定义的行为。
示例:
struct A { int i; };
struct B { int i; };
int foo(A& a) {
return ((B&)a).i; // Undefined behavior, unrelated type conversion
}
int foo() {
int i;
return i; // Undefined behavior, ‘i’ is not initialized
}
依据
ISO/IEC 14882:2003 4.1(1)-undefined
ISO/IEC 14882:2011 4.1(1)-undefined