是否有可能从结构继承一个类?
更具体地说,我如何用类包装C结构,以便我可以将类指针传递给需要struct ptr的方法,并在我收到指针时将其转换回来。回调?
(或者更具体地说,类的地址应该与struct的地址相同...)
答案 0 :(得分:4)
您只是从C结构派生。在C ++中,struct
和class
之间的唯一区别是后者的默认成员可访问性为private
,而前者为public
。
如果仅涉及单个继承,则class
的地址应与充当基类的struct
相同。如果继承仅用于实现(即两者之间没有Is-A关系),请考虑使用私有继承。
答案 1 :(得分:2)
是的,在C ++中,类是具有默认私有成员的结构,而结构是具有默认公共成员的类。因此,Class可以从struct派生。
在BO中包装结构A的方法的选择是OO设计中常见的: B是A:使用继承 B包含A,使用Composition:make A是B的成员。
答案 2 :(得分:2)
根据定义,struct是一个默认公共成员的类;就是这样,
struct person
{
};
等于:
class person
{
public: //...
};
另一个区别是,默认情况下(没有显式访问修饰符)类继承意味着私有继承,而struct继承意味着公共继承。
struct person {...};
struct employee : person {...};
表示公共继承,即员工与个人之间存在IS A关系和隐式转换;
class person {...};
class employee : person {...};
表示私人继承(即员工在关系方面的实施,员工与个人之间没有隐含的转换)。
在你的情况下,类和结构是可以互换的;