以下代码段的模拟代码
class A
{
};
我有上面的类,现在我为它创建了一个对象指针,并为它创建了一个对象。
A* a;
A aobj;
我想使用aobj(A的对象)在下面的if语句中使用模拟代码。
if(a)
{
}
答案 0 :(得分:3)
我在堆上分配的aobj因此无法删除(解构)。只要它在范围内,它就可以使用。一旦超出范围就会被自动覆盖,因此没有必要使用if(aobj)它将存在于范围内。
int fun() {
A aobj; // this object cannot be deleted because there is no new operator
// and it will live until the function will return(or die)
if(aobj) { // there is no point to test it because will always be true(except OS crash)
}
return 0;
}
如果你需要在范围之外的对象,你必须用new创建它们并在删除它们时指定null(c ++ 11),这样你就会知道它的空指针何时不再存在一个对象。
答案 1 :(得分:2)
if(true)
{
}
甚至更简单:
;
很难说这里说的是什么。这个答案含糊不清,含糊不清,不完整,不能以现有形式合理地进行投票。请参阅FAQ。
答案 2 :(得分:1)
没有这样的东西,因为 aobj 永远是一个对象。它总是“存在”。指针 a 可以是NULL,但不能是 aobj 对象。
答案 3 :(得分:1)
据推测,A有一个初始化其成员的构造函数。你可以添加一个
bool IsValid()
仅检查成员是否为默认值的成员。例如
class A {
int value;
A() : value(-1) { }
bool IsValid() { return value!=-1; }
}
if (aobj.IsValid()) {
...
}