UE PURE_VIRTUAL
UE PURE_VIRTUAL
纯虚函数关键字 - PURE_VIRTUAL
UClass
在 C++ 意义上不能真正是抽象的- 因为
UObject
要求每个类都可以实例化(它至少创建每个类的一个实例,作为类默认对象 [$ Class Default Object $-CDO] 用于持久化默认的属性
- 因为
- 因此,每个类方法都必须有一个实现,即使它什么也不做。
但是,
可以通过使用 PURE_VIRTUAL 宏装饰内联方法实现来获得类似的行为。
因此,即使该方法 不是 C++ 意义上的纯虚方法 - 它有一个(可能是空的)函数体 - 编译器仍然可以确保所有子类确实提供实际的实现。
PURE_VIRTUAL 的宏实现
1
#define PURE_VIRTUAL(func,extra) { LowLevelFatalError(TEXT("Pure virtual not implemented (%s)"), TEXT(#func)); extra }
第一个参数是用于 记录目的的函数名称
第二个参数用于 添加额外的代码。这可能是空的,但仍然需要在括号之间添加逗号。
必须是 CPP 意义上的完整函数
代码
1
2
3
virtual void Halo() PURE_VIRTUAL(MyClass::Halo, );
virtual bool IsValid() PURE_VIRTUAL(MyClass::IsValid, return false;);
本文由作者按照 CC BY 4.0 进行授权