簡體   English   中英

派生類的組成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM