在这种情况下我应该检查指针吗?

should I check pointers in such situations?

我是编程和游戏开发的新手 每次读到和听到指针是一场噩梦时,我都想问一下在如下所示的情况下是否有必要检查指针?

// create a component of a certain type and return a pointer to data of this type
StaticMeshCompt = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
if (StaticMeshCompt)
{
   // further work with the component
}

正如 David G 和 ChrisMM 所说,如果 CreateDefaultSubobject 函数有可能失败或 returning 空指针,则有必要检查指针。如果已知函数总是 return 有效对象,则在这种情况下可能不需要检查。

不,不需要检查指针。 CreateDefaultSubobject 可以 return nullptr 的情况是:

  • 传递的class是nullptr(保证对任何UObject都有效)。
  • class 有抽象标志(不是这种情况 UStaticMeshComponent).
  • 分配本身由于缺少可用内存而失败(此时, 你还有其他问题)。