在if语句中使用此
Using this in an if statement
所以我知道this
是对类本身的引用,但我不能真正说出它在if语句中的作用
以下代码的作用是什么?
if(this)
{
//Code goes here...
}
我确信它正在检查类是否为null,但如果能进一步解释就太好了!
this
指针是一个常量指针,用于保存当前对象的内存地址。所以,从技术上讲,这将检查它是否为null,这在成员函数中不会为null。由于在拥有对象之前无法调用类,因此在抽象类中无论如何都不能使用它。所以,如果没有多大意义的话。
它试图检查该方法是否在NULL指针上调用,例如:
Foo * foo = NULL;
foo->TheMethod();
然而,这不是一种有效的技术,因为在NULL指针上调用方法(甚至是非虚拟方法!)是未定义的行为,因此测试无法可靠地工作。
它确实在检查this != nullptr
。然而,当您到达该语句时,您已经从未定义的行为中转移了出来。因为this
仅在类方法中可用,并且用nullptr
调用这样的方法是UB。
因此,这种说法从来没有任何有效的目的。
除了UB,还要记住这样的检查只有在用指针调用时才有用。它们与对象/引用无关。如果方法是virtual
,那么大多数体系结构都会在到达该if
之前崩溃代码
相关文章:
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 需要有关此 if 语句的帮助
- 转换器练习:跳过 if 语句和 if 语句
- 避免在 C++ 中的 if 语句中递增
- 如果仍然不满足要求,如何使 if 语句重复?
- do while 循环中的 if 语句以 yes 或 no 结尾
- 为什么在此C++代码中触发此 if 语句?
- 如何基于平台在制作文件中制作if语句?
- 在 if 语句中使用 GetKeyState 时,它会跳过条件
- C++ If 语句,从其他语句重复