所以我有以下类(class)......
class Pet
{
public:
Pet() : id(0),
name("New Pet")
{
}
Pet(const int new_id, const std::string new_name) : id(new_id),
name(new_name)
{
}
Pet(const Pet new_pet) : id(new_pet.id),
name(new_pet.name)
{
}
private:
const int id;
const std::string name;
};
然后在我的代码中的某处创建此类的实例,如下所示...
Pet my_pet = Pet(0, "Henry");
稍后在我的代码中,一个事件应该导致该宠物被删除。 删除(我的宠物);
如何检查 my_pet 是否已经初始化...
这样的东西行得通吗?
if(my_pet == NULL)
{
// Pet doesn't exist...
}
最佳答案
假设你的意思是
Pet* my_pet = new Pet(0, "Henry");
代替 Pet my_pet = Pet(0, "Henry");
您可以将 Pet
对象初始化为 NULL
(或 C++11 的 nullptr
),如下所示:
Pet* pet = NULL; // or nullptr
然后为它分配一个 Pet
的实例:
pet = new Pet(0, "Henry");
这允许您检查 pet
的值而无需调用未定义的行为(通过未初始化的变量):
if (pet == NULL) // or nullptr
{
...
}
关于c++ - 如何检查对象是否已在 C++ 中初始化/创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203221/