正如标题所说,
TBitArray<>
没有确切的类型,那么是否意味着该方法可以接受任何如TBitArray<int32>
,TBitArray<float>
,...作为参数?
FORCEINLINE bool HasAll(const TBitArray<>& Other) const
{
FConstWordIterator ThisIterator(*this);
FConstWordIterator OtherIterator(Other);
while (ThisIterator || OtherIterator)
{
const uint32 A = ThisIterator ? ThisIterator.GetWord() : 0;
const uint32 B = OtherIterator ? OtherIterator.GetWord() : 0;
if ((A & B) != B)
{
return false;
}
++ThisIterator;
++OtherIterator;
}
return true;
}
这段代码有什么区别
template<class T>
FORCEINLINE bool HasAll(const TBitArray<T>& Other) const
那么这是否意味着该方法可以接受任何诸如
,TBitArray<int32>
,...作为参数?TBitArray<float>
号
TBitArray
类的定义:
template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;
你可以看到它的模板参数采用
Allocator
类型,并且默认为 FDefaultBitArrayAllocator
。所以,TBitArray<>
只是TBitArray<FDefaultBitArrayAllocator>
的简写。
TBitArray<>
是具有所有默认模板参数的模板类。如果是TBitArray<int32>
或TBitArray<float>
取决于模板定义。
这里是它的定义:
template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;
所以,它既不是
int32
也不是 float
,它是默认的数组分配器。