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

标签 c++ class object

所以我有以下类(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/

相关文章:

java - 具有需要监听更改的 Collection 属性的通用 Java 类设计

javascript - 使用 QtWebEngine 在 Qt 中将 C++ 对象暴露给 Javascript

c++ - 如何使用 2 个数字之间的数字使 "if "语句为真? C++

python django 名称约定

php - 获取对象php内对象的变量名

javascript - 如何从数组中获取分类对象的值

JavaScript 代码技巧 : What's the value of foo. x

c++ - vector<shared_ptr<X>> copying-调用了X构造函数?

java - 将 log4j 与 SWIG/JNI 集成?

android - 如何检索 Intent 请求的 Activity