如何检查对象是否已在 C++ 中初始化/创建?

Ric*_*cky 3 c++ class object

所以我有以下课程......

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;
};
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某个地方,我然后像这样创建了这个类的一个实例......

Pet my_pet = Pet(0, "Henry");
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中,一个事件应该导致这个宠物被删除。删除(我的宠物);

如何检查 my_pet 是否已初始化...

这样的东西会起作用吗?

if(my_pet == NULL)
{
    // Pet doesn't exist...
}
Run Code Online (Sandbox Code Playgroud)

Lev*_*evi 6

假设你的意思是

Pet* my_pet = new Pet(0, "Henry");
Run Code Online (Sandbox Code Playgroud)

而不是Pet my_pet = Pet(0, "Henry");
您可以像这样初始化您的Pet对象NULL(或nullptr用于 C++11):

Pet* pet = NULL; // or nullptr
Run Code Online (Sandbox Code Playgroud)

然后为它分配一个实例Pet

pet = new Pet(0, "Henry");
Run Code Online (Sandbox Code Playgroud)

这允许您在pet不调用未定义行为的情况下检查 的值(通过未初始化的变量):

if (pet == NULL) // or nullptr
{
    ...
}
Run Code Online (Sandbox Code Playgroud)