在浏览一些C ++概念时,我偶然发现了std :: is_base_of逻辑。
谷歌搜索逻辑产生了下面的代码,但我无法理解它。
有人可以解释一下它的运作方式吗?
myClassElements = [ x for x in itemList if isinstance(x,MyClass) ]
if len(myClassElements) > 2:
...do something
答案 0 :(得分:1)
当B
是D
的基类时,调用Test(static_cast<D*>(0))
会解析为Yes Test(B*)
。否则,它会解析为No Test(...)
。
如果B
是D
的基类,则sizeof(Test(static_cast<D*>(0)))
的值为sizeof(Yes)
。否则,它等于sizeof(No)
。
Yes
和No
的定义使sizeof(Yes)
永远不会等于sizeof(No)
。
如果B
是D
的基类,
sizeof(Test(static_cast<D*>(0))) == sizeof(Yes)
评估为true
。否则评估为false
。