2010-01-31 45 views
3

是否有可能让一个类继承自一个结构?更具体地说,我如何用一个类来包装一个C结构体,这样我就可以将类指针传递给需要struct ptr的方法,并在我接收到指针时返回。回调?在C++中使用struct作为派生类的基础

(或甚至更具体的类的地址应该是相同的地址相同结构......)

回答

4

你只是从C结构派生。在C++中,structclass之间的唯一区别在于后者的默认成员可访问性为private,而前者为public

如果只涉及单一继承,class的地址应该与作为基类的struct相同。如果继承仅用于实现(即两者之间不存在Is-A关系),请考虑使用私有继承。

2

是的,在C++中,一个类是一个具有默认私有成员的结构,而一个结构是一个具有默认公共成员的类。因此一个类可以从一个结构派生。

上的方法中的选择来包装结构的B类是在面向对象的设计通常的: B是一个:使用继承 B包含一个A,使用组合物:使甲一个的memberOf B.

2

根据定义,结构是一个成员默认为public的类;也就是说,

struct person 
{ 
}; 

是等于:

class person 
{ 
    public: //... 
}; 

另一个不同之处,在默认情况下(不明确的访问修饰符)类继承意味着私有继承,和struct继承意味着公有继承。

struct person {...}; 
struct employee : person {...}; 

意味着公有继承,即存在IS关系和员工与人之间的隐式转换;

class person {...}; 
class employee : person {...}; 

意味着私人继承(即员工在关系条款中实现并且员工和个人之间没有隐式转换)。

在你的情况下,类和结构是可以互换的;

相关问题