| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 141 人关注过本帖
标题:为啥空指针调用函数不报错
只看楼主 加入收藏
陈紫文
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2018-9-5
结帖率:62.5%
  已结贴   问题点数:10  回复次数:1   
为啥空指针调用函数不报错
想实现一下单例模式,但我发现h_wife为空的情况下是可以调用wife类的marry方法,很奇怪,为啥不报错啊...


#include <iostream>
using namespace std;

class Wife
{
public:
    void marry()
    {
        cout << "this:" << this << endl;
        cout << "姑娘结婚..." << endl;
    }

    static Wife* creatWife()
    {
        if (m_Wife==nullptr)
        {
            m_Wife = new Wife();
        }
        return m_Wife;
    }
private:
    Wife(){  };//私有构造函数
    static Wife* m_Wife;
};

Wife* Wife::m_Wife = nullptr;

class husband
{
public:
    husband()
    {
        h_wife = nullptr;
    }
    //选媳妇方法
    void choose()
    {
        h_wife = Wife::creatWife();
    }

    //结婚方法
    void getMarry()
    {
        //m_wife = Wife::creatWife();
        h_wife->marry();
    }
private:
    Wife* h_wife;
};

int main()
{
    husband m_husband;
    m_husband.getMarry();//这里为啥不报错
    while (1);
    return 0;
}
2018-12-30 21:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:279
帖 子:6062
专家分:34798
注 册:2011-1-18
  得分:10 
为什么要报错?
你自己也说了“wife类的marry方法”,不是h_wife的,只要不解引用h_wife就行
2018-12-31 00:56







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032840 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved