[英]Composition of derived classes
我對C ++中的組成和繼承有疑問:
我有一個基類'A'
和一個派生類'B'
( 'B'
繼承了'A'
成員),是否有可能將'B'
用作組成的'A'
的成員?
關於“ A有B成員,B源自A”:實際上,您不能聲明這種東西。 如果類A具有類型B的成員,則需要在A之前聲明B。如果B使用A作為基數,則必須在B之前聲明A。
至於合成,如果您想做這樣的事情,則可能必須使用間接尋址(指針,智能指針等)。
class B;
class A {
B *b;
};
class B : public A {
};
有人可能會爭辯說(在C ++中)使用指針不是組合。 但是,在Java中,所有對象都是“指針”,因此組成為:
class A {
B b;
}
class B extends A {
}
但是,您可以嵌入B*
字段。 因此, const B&
應該也是可能的,並且表現得像B
(請記住,我現在是一個沙盒Java程序員。)
class B;
class A {
B& b;
};
順便說一句,您甚至可能沒有在A中嵌入A。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.