标题:为啥空指针调用函数不报错
只看楼主
陈紫文
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;
}
搜索更多相关主题的帖子: 指针 调用 报错 方法 void 
2018-12-30 21:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
为什么要报错?
你自己也说了“wife类的marry方法”,不是h_wife的,只要不解引用h_wife就行
2018-12-31 00:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492413-1-1.html




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

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