我遇到了一些旧代码,它使用一种相当奇怪的方法来调用类的静态函数:
课程定义和实施
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重复,因为我明确表示静态成员函数。