ZHCU947E June 2015 – January 2023
由于存在与汇编语言中不存在的 C++ 作用域相关的问题,在转换为汇编时仅部分支持衍生类。最大区别是基类成员不会自动成为衍生类的完整(顶层)成员。例如:
class base
{
public:
int b1;
};
class derived : public base
{
public:
int d1;
}
在 C++ 代码中,衍生类将包含整数 b1 和 d1。在转换后“衍生”的汇编结构中,必须使用基类的名称(例如 derived.__b_base.b1,而非预期的 derived.b1)访问基类的成员。
非虚拟、非空基类将在衍生类中的名称前加上 __b_ 以表示它是基类名称。因此,上面的示例是 derived.__b_base.b1,而不是简单的 derived.base.b1。