如何在防止一個類被其他的類繼承呢?
如果是僅僅為了達到這個目的可以直接把這個類的構造函數設置成私有的,這樣就杜絕了其他類的繼承。也相當于毀掉了這個類(無法再創造出自己的對象)。
那么怎么樣既要保證這個類的完整性,又防止其他類的繼承呢?
這就要借助友元來實現,因為友元是不可以被繼承的。如果一個類的構造函數要借助它的友元類,那么繼承了這個類的類就無法構造自己的對象。從而杜絕了被繼承
#include <iostream>
using namespace std;
class C;class BASE {
private:BASE() {}friend class C; //設class C為class BASE的友元
};class C : public virtual BASE
{};class D : public C
{};int main()
{C c;//D d; 不可以實例化對象
}
為什么class C要虛擬繼承class BASE 而不是直接繼承呢?
參考資料?
- c++如何防止一個類被其他類繼承
?