【发布时间】:2015-04-24 14:53:24
【问题描述】:
我想知道以下代码是否会导致未定义的行为:
#include <cstddef>
#include <cstdio>
struct IA {
virtual ~IA() {}
int a = 0;
};
struct IB {
virtual ~IB() {}
int b = 0;
};
struct C: IA, IB {};
int main() {
C* pc = nullptr;
IB* pib = pc;
std::printf("%p %p", (void*)pc, (void*)pib);
}
【问题讨论】:
-
这会使用 c++ 14 生成
0 0:ideone.com/iefRnb -
具有多重继承(以及因此指针调整)的示例会更有趣。
-
@Quentin 同意。将更新问题。
标签: c++ language-lawyer implicit-conversion nullptr upcasting