是否有可能让一个类继承自一个结构?更具体地说,我如何用一个类来包装一个C结构体,这样我就可以将类指针传递给需要struct ptr的方法,并在我接收到指针时返回。回调?在C++中使用struct作为派生类的基础
(或甚至更具体的类的地址应该是相同的地址相同结构......)
是否有可能让一个类继承自一个结构?更具体地说,我如何用一个类来包装一个C结构体,这样我就可以将类指针传递给需要struct ptr的方法,并在我接收到指针时返回。回调?在C++中使用struct作为派生类的基础
(或甚至更具体的类的地址应该是相同的地址相同结构......)
你只是从C结构派生。在C++中,struct
和class
之间的唯一区别在于后者的默认成员可访问性为private
,而前者为public
。
如果只涉及单一继承,class
的地址应该与作为基类的struct
相同。如果继承仅用于实现(即两者之间不存在Is-A关系),请考虑使用私有继承。
是的,在C++中,一个类是一个具有默认私有成员的结构,而一个结构是一个具有默认公共成员的类。因此一个类可以从一个结构派生。
上的方法中的选择来包装结构的B类是在面向对象的设计通常的: B是一个:使用继承 B包含一个A,使用组合物:使甲一个的memberOf B.
根据定义,结构是一个成员默认为public的类;也就是说,
struct person
{
};
是等于:
class person
{
public: //...
};
另一个不同之处,在默认情况下(不明确的访问修饰符)类继承意味着私有继承,和struct继承意味着公有继承。
struct person {...};
struct employee : person {...};
意味着公有继承,即存在IS关系和员工与人之间的隐式转换;
class person {...};
class employee : person {...};
意味着私人继承(即员工在关系条款中实现并且员工和个人之间没有隐式转换)。
在你的情况下,类和结构是可以互换的;