【问题标题】:Use NULL in default constructor在默认构造函数中使用 NULL
【发布时间】:2020-04-01 11:51:33
【问题描述】:

在我的 C++ 类(头文件)中,我使用的是这个:

int pWholesalerId;

现在,我已经创建了一个默认构造函数。是否可以将此属性的值设置为null?

Game::Game()
{
    gId = 0;
    pWholesalerId = Null;
}

目前,我得到了identifier "Null" is undefined,尽管我已经在使用#include <stddef.h>

【问题讨论】:

    标签: c++ oop null default-constructor


    【解决方案1】:

    没有。

    没有将int 设置为空的事情。 ints 是数字。它们不是“可空的”。

    您可以考虑动态分配,例如std::unique_ptr<int>(尽管这对于int 来说非常繁重)或std::optional<int>。

    或者,您只需自己跟踪int 的值是否“有意义”(例如,使用布尔值,或通过检查类状态的其他方面)。将其设置为 0 可能会也可能不会实现此目标,具体取决于您的要求。

    【讨论】:

      【解决方案2】:

      在 C 头文件 <stddef.h> 或 C++ 头文件 <cstddef> 中没有宏 Null。定义了宏NULL。但是它是用来通过空指针常量来初始化一个指针的。

      在你的构造函数中你应该只写

      pWholesalerId = 0;
      

      【讨论】:

        【解决方案3】:

        简单写

        int pWholesalerId = 0;
        

        在头文件中,对gId有类似的声明,然后完全删除默认构造函数。

        Null 不是标准 C++ 定义的。 NULL 是,但它的含义在 C 和 C++ 中有所不同,最好避免使用。使用0 分配给int,使用nullptr 分配给指针类型。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-30
          • 2016-07-23
          • 1970-01-01
          相关资源
          最近更新 更多