UE4类运算符布尔()重载
UE4 class Operator bool() overload
当我在这里学习教程时UE4基础知识我注意到在CollidingPawn.cpp中
if语句以对象if (OurMovementComponent && ...){...}
为条件
声明并定义为
class UCollidingPawnMovementComponent* OurMovementComponent;
//...
class HOWTO_COMPONENTS_API UCollidingPawnMovementComponent : public UPawnMovementComponent
{/* ... */};
我认为这个类有一个重载的((运算符,然后我追溯到它的所有父类,但我找不到一个,所以我想知道if
语句在这里检查了什么,以及它是如何定义的。
OurMovementComponent
被定义为指针。所有指针都可以在条件语句中进行测试,而不管它们的指针类型是否具有重载的operator bool
。
当涉及到指向基本类型和类类型的指针时,它们之间没有区别。
if语句检查指针是否为空,可能是在访问它应该指向的对象之前,以避免未定义的行为。
相关文章:
- 继承函数的重载解析
- 你能重载对象变量名本身返回的内容吗
- 从父命名空间重载类型
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 重载操作程序时出错>>用于类中的字符串 memebr
- 一个关于在C++中重载布尔运算符的问题
- 提升精神:解析布尔表达式并简化为规范范式
- 不同翻译单元中不可重载的非内联函数定义
- 为什么使用SFINAE而不是函数重载
- 重载更少,则运算符返回相反的布尔值
- UE4类运算符布尔()重载
- 重载运算符<<输出布尔值.为什么
- 将std::initializer_list与布尔重载函数一起使用时,重载解析出现意外行为
- 使用运算符!对重载的布尔谓词求反
- "string_literal"解析为布尔值,但不解析为 std::string,当编译器选择函数的重载版本时
- 匹配布尔值与常量 void* 重载的函数地址
- 重载布尔/字符串歧义
- 运算符重载和到布尔的隐式转换与安全布尔习惯用法有关
- 哪个操作符重载被用于ifstream对象求值为布尔值