【发布时间】:2020-05-17 11:51:49
【问题描述】:
#include <iostream>
class Singleton {
private:
static Singleton* s_instance;
public:
static Singleton& Get() {
return *s_instance;
}
void Hello() {
std::cout << "Hey Bro" << std::endl;
}
};
Singleton* Singleton::s_instance = nullptr;
int main() {
Singleton::Get().Hello();
return 0;
}
它打印成员函数 Hello() 的输出。静态成员函数Get()中如何取消引用nullptr
P.S:这段代码 sn-p 取自 YouTube 上的 Cherno C++ 系列。
【问题讨论】:
-
见stackoverflow.com/questions/2533476/…。至于 Youtube 教程,最好还是放弃它,转而看一本好书stackoverflow.com/questions/388242/…
-
“工作”是什么意思?在我的机器上,这段代码崩溃了。
-
取消引用
nullptr会导致未定义的行为。 C++ 中“未定义”的含义本质上是“C++ 标准对发生的事情没有任何限制”。实际上,这不需要运行时错误或其他任何东西——它似乎在“工作”的未定义行为的范围内——对于程序员可能对“工作”进行的任何定义。
标签: c++ pointers static static-methods nullptr