ARM处理器与富士电机手册:非虚拟成员函数解析

需积分: 0 20 下载量 167 浏览量 更新于2024-08-10 收藏 4.79MB PDF 举报
"调用非虚拟成员函数-富士电机fuji alpha5 smart plus用户手册完整版" 在编程中,调用非虚拟成员函数是指直接通过对象实例来访问类中的非虚函数,这是一种常见的面向对象编程操作。在给定的描述中提到了一个例子,涉及在具有虚拟基类(virtual base)或非虚拟基类(non-virtual base)的场景下调用非虚成员函数。虚拟基类是在多继承中用于解决继承层次中重复基类问题的一种机制,而非虚拟基类则是没有显式声明为虚拟的基类。 这段描述中给出的代码片段是在C++的上下文中,展示了如何调用非虚拟成员函数。`__mcall_is_in_vbase`是一个假设存在的辅助函数,用于检查成员函数`f`是否位于虚拟基类中。如果`f`在虚拟基类中,那么`ASSERT {FALSE}`表示这是一个错误,因为通常不能直接通过指针调用虚拟基类的非虚成员函数。如果`f`不在虚拟基类中,代码将通过`MOV r0, rp`指令使用指针`rp`来调用成员函数`f`。 这里涉及到的知识点包括: 1. **虚拟函数与非虚拟函数**:虚拟函数在C++中用于实现多态性,允许子类重写父类的行为。非虚拟函数则不具备这种特性,它们的行为取决于函数被调用的对象的实际类型。 2. **虚拟基类**:在多继承的环境中,如果多个子类都继承自同一个基类,不声明为虚拟的基类可能会导致二义性。虚拟基类解决了这个问题,确保所有子类只有一个共享的基类实例。 3. **指针调用成员函数**:C++中,可以使用对象指针或引用来调用成员函数,如果是非虚函数,调用的是指针类型所指对象的函数;如果是虚函数,会根据实际对象的类型动态绑定到正确的方法。 4. **汇编语言指令**:`MOV`是汇编语言指令,用于在寄存器之间或者寄存器与内存之间移动数据。在这个例子中,`MOV r0, rp`将`rp`指针的值放入寄存器`r0`,这可能是为了准备调用成员函数。 5. **ARM处理器**:ARM系列处理器是广泛使用的微处理器,常用于嵌入式系统,如手机、物联网设备等。它们以其高效能、低成本和低功耗特性著称。 6. **ARM公司历史**:ARM公司起源于1990年,由苹果、Acorn和VLSI Technology共同创立,专注于RISC处理器的设计和授权。随着时间的发展,ARM已经成为全球性的大公司,其处理器内核和技术在各种设备中广泛应用。 这个资源讨论了在面向对象编程中的成员函数调用,特别是针对非虚拟成员函数,以及这与ARM处理器和相关技术的背景知识。