zoukankan      html  css  js  c++  java
  • 空指针对象调用成员函数一定崩溃吗?

    今天阅读书籍,上面写了一句话,“得到一个空指针,继续调用成员函数会导致程序崩溃”。

    这句话似乎写的比较草率。我在实践中有过空指针调用成员函数不崩溃的情况,当然,用空指针去调用成员函数,肯定是不合理的。只不过,不一定会崩溃。

    比如:

    class A
    {
    public:
    	void func(bool a)
    	{
    		std::cout << "A::func()" << std::endl;
    
    		if (a)
    		{
    			std::cout << m_i << std::endl;
    		}
    	}
    
    private:
    	int m_i = 0;
    };
    

    如果这样调用:

    A *a = nullptr;
    
    a->func(true);
    

    那么的确会崩溃。但是如果是 a->func(false); 则不会崩溃。原因是没有用到成员变量,也就是没有读取非法地址。仅仅调用一个函数,是合法的,函数的地址是静态的,所有的对象的成员函数地址都一样。

  • 相关阅读:
    stack 栈
    链表
    2018.09.08 DL24 Day1 总结
    10.07 WZZX Day2总结
    10.06 WZZX Day1总结
    Joseph问题 (线段树)
    [POI2006]TET-Tetris 3D
    10.05FZSZ Day2模拟总结
    Tarjan求LCA
    数据结构
  • 原文地址:https://www.cnblogs.com/demon90s/p/15575908.html
Copyright © 2011-2022 走看看