通过未初始化的指针调用静态方法

时间:2015-06-26 14:30:22

标签: c++

我遇到了一些旧代码,它使用一种相当奇怪的方法来调用类的静态函数:

课程定义和实施

class MyClass
{
public:
  ...
  static MyClass *GetFromString(const char *string);
  ...
};


MyClass *MyClass::GetFromString(const char *string)
{
   ...
}

在旧代码中调用GetFromString

  MyClass *pClass = pClass->GetFromString("TEST");

IMO正确的方法是

  pClass = MyClass::GetFromString("TEST");

在第一种方法中,它看起来好像我们取消引用了一个未初始化的this指针,但由于GetFromString方法是静态的,实际上不需要this指针,代码可以工作。

标准说什么?第一种方法是正确的还是会导致一些编译器的未定义行为?

我不确定这是否与this SO question重复,因为我明确表示静态成员函数。

0 个答案:

没有答案