考虑以下定义:
struct A {
// ...
};
struct B : public A {}; // empty
void f(B& b) { /* use b */}
void g(A& a) {
f(static_cast<B&>(a)); // is this a safe downcast?
}
int main() {
A a;
g(a);
}
在上面的例子a
中确实是一个实例A
。
由于B
有一个空定义,我想知道在这种特定情况下,对 f 的调用及其执行是否是未定义的行为。