我的 C++ 程序中有 2 个对象,它们都从同一个父类扩展:A 类和 B 类,它们都扩展了类基。
是否可以使用类 A 创建一个对象,然后在程序中将其更改为类 B?
简短的回答,不。您无法安全地从 A 转换为 B 或从 B 转换为 A。您可以安全地转换为基类,因为 A IS_A 基类和 B IS_A 基类,但 A 而不是 B,反之亦然。没有便携式或安全的方法可以做到这一点。虽然您的编译器可能允许您这样做,并且虽然它可能看起来有效,但以这种方式在不相关的类之间进行转换的结果是未定义的。
顺便说一句,您没有理由不能添加强制转换构造函数来允许从 B 构造 A,反之亦然。那将是绝对安全的。您只需使用 A 的成员来初始化 B 的成员,反之亦然。您必须处理的任何不常见的成员可能会为它们分配默认值。