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

学习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一直都是空指针,没错。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题