[英]C++ - Inherit from reference
我希望 A 類繼承自 B 類,而 A 沒有自己的 B 實例化
這個想法是在堆上創建一個 B 對象(使用 B new)並將指針指向 A。A 之后將使用這個對象來解決繼承問題。
這是我想做的一個例子:
B* b = new B();
b->myBmethode();
{
A(b);
A.myBmethode();
} // A destroyed
b->myBmethode();
delete b;
不,這是不可能的(如果我正確理解了您的問題)。
3.7.5
成員子對象、基類子對象和數組元素的存儲時間為其完整對象的存儲時間
如果 B 是在 A 之外創建的,則 B 不會在 A 被刪除后自動刪除,除非你明確這樣做,
創建一個接口 IA,讓 A 和 B 都實現該接口。 對於 B,只需將所有實際實現委托給 B。
B 的生命周期取決於您的設計。 你希望它什么時候被摧毀? 如果有意義,您也可以制作 B 單例。
class IA {
virtual doA() = 0;
}
class A: public IA {
virtual doA();
}
class B: public IA {
B(A&a);
virtual doA(){
a.doA();
}
private:
A&a;
}
//init
A* a = A::getInstance();
B *b = new(*a) ;
b->doA();
您不能從引用繼承,但是使用這樣的東西,您可以做到一半:
#include<functional>
...
struct A : std::reference_wrapper<B>{
// using std::reference_wrapper<B>::reference_wrapper; // inherit constructor
};
https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.