Mar*_* A. 5 c c++ oop struct class
我记得我在某处看到过某些代码,这些代码曾经有一个结构作为基类,而C++类作为派生类
struct Base_Struct
{
}
class Derived : Base_Struct
{
...
}
Run Code Online (Sandbox Code Playgroud)
关键是指向Base_Struct*的指针从C++文件传递到某些C文件,然后设法使用Base_Struct中的一些函数指针.
我的问题是:如果我将Base_Struct*传递给C文件,C代码是否能够完全使用Base_Struct?派生类怎么样?
如果我传递
Base_Struct*
给C文件,C代码能够Base_Struct
完全使用吗?
如果它是标准布局类,并且 C 编译器对此类类使用与 C++ 编译器相同的 ABI,则它可以访问所有数据成员。显然,它无法访问任何成员函数或静态成员,因为这些东西在 C 中不存在,并且必须从任何与 C 兼容的结构定义中删除。
那么派生类呢?
您无法在 C 程序中定义该类,因此它无法对指针执行任何有趣的操作。