編譯期判斷類的繼承性

2021-04-13 07:41:40 字數 837 閱讀 4901

介紹乙個雕蟲小技:編譯期判斷類的繼承性。具體來說就是型別

u是否繼承自型別

t。該技術的靈感和源頭來自

andrei alexandrescue

的《modern c++ design

》。原書中描述的此技術有乙個小小的

bug。

template

class

__conversion

; enum;

enum;

};

template

class

__conversion ;

enum;

enum;

};

//判斷t

是否是u

的父類或者t和

u是相同型別

#define

supersubclass(t,u) (kimi_boost::__conversion::exists &&/

!kimi_boost::__conversion::sametype)

//判斷t

是否是u

的父類

#define

supersubclass_strict(t,u) (supersubclass(t,u) &&/

!kimi_boost::__conversion::sametype)

class

a{};

class

b : public a{};

void

supersub_test()

01011

1100100

C 類的繼承性

private,私有成員,只能由類內部成員訪問 預設屬性 也是類封裝性的體現 public,共有成員,類內成員或類物件都能訪問 protected 保護成員,類內成員或者繼承類訪問。一般使用方式 類成員變數使用private 類成員函式使用public 而protected是在類繼承中才會使用。不繼...

css的繼承性

一 css的繼承性 1 文字屬性 屬性 說明vertical align 垂直文字對齊 text decoration 規定新增到文字的裝飾 text shadow 文字陰影效果 white space 空白符的處理 unicode bidi 設定文字的方向 2 盒子模型的屬性 屬性 說明width...

CSS的繼承性

css的某些樣式是具有繼承性的,那麼什麼是繼承呢?繼承是一種規則,它允許樣式不僅應用於某個特定 html 標籤元素,而且應用於其後代。所有的css語句都是基於各個標籤的繼承關係的。但是並不是所有的屬性都能被繼承,一般的字型屬性都是能繼承的,不能繼承的例如邊框屬性 注意 孩子能繼承父親屬性,但是父親不...