咕快快
2020-03-25 21:58
采纳率: 100%
浏览 124

学习c++中遇到的问题,求大佬解答

#include <iostream>
class Singleton{
private:
    static Singleton* s_Instance;
public:
    static Singleton& Get(){
        return *s_Instance;
    }
    void Hello() {
        std::cout << "Hello" << std::endl;
    }
};
Singleton* Singleton::s_Instance = nullptr;

int main(){
    Singleton::Get().Hello();
    std::cin.get();
}

首先将Singleton类中的静态指针s_Instance设置为空指针,然后在main函数中直接调用Singleton::Get()用来这个指针指向内存的引用。**我的问题是:**
1. 已经被设置为空指针的内存单元应该是不存在的,那么也就无法获取到这个内存单元的引用,但是这段代码居然能够顺利被编译运行,求大佬讲解内部原理
2. 我在调试时发现这个运行从始至终s_Instance的值都是0,也就是空指针,这又是怎么回事呢。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • GKatHere 2020-03-26 06:28
    已采纳

    hello内部未用于类指针,相当于静态函数,所以能够运行。
    s_Instance一直都是空指针,没错。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Italink 2020-03-26 08:13

    楼上说的对,因为hello函数没有访问过成员数据【变量/函数】,因此不需要this指针,可以直接调用

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题