是否有可能讓一個類繼承自一個結構?更具體地說,我如何用一個類來包裝一個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 {...};
意味着私人繼承(即員工在關係條款中實現並且員工和個人之間沒有隱式轉換)。
在你的情況下,類和結構是可以互換的;