为什么样要用静态成员函数?内存当中的野指针多了会对电脑运行产生什么样样的影响

发表时间:2018-01-09 15:24:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《求一套电脑组装配置单能胜任魔兽世界和大型单机游戏的?电脑2011年开始用用的小机箱台式机》相关知识。本篇中小编将再为您讲解标题为什么样要用静态成员函数?内存当中的野指针多了会对电脑运行产生什么样样的影响。

初学C++,刚学到静态成员函数,不太懂为什么要加入静态成员函数。

所以就想问问大神们,看能不能解释下。

在研究静态成员函数之前,我们先来考虑考虑为什么C++中会引入静态成员函数。

我们来看下面这个例子

class CStaticMember

{

public:

private:

static int m_nIntA;

};

我们定义①个CStaticMember类,里面包含①个私有的静态成员变量m_nIntA,如果外部想访问或者更改m_nIntA的值,那么根据C++语法的要求,我们必须提供①个成员函数来进行访问。如下我们提供①个公有的GetIntA函数来进行访问。

class CStaticMember

{

public:

int GetIntA()

{

return m_nIntA;

}

private:

static int m_nIntA;

};

我们知道在C++中调用类的成员函数,会传递①个this指针,将类的实例化对象的首地址传递给成员函数,函数操作会根据对象首地址计算其成员变量的地址,然后进行操作。然而静态成员变量并不保存在对象的内存布局中,而是保存在数据段中,因而没有必要用到this指针。所以需要①种独立于对象之外对对象静态成员变量的访问操作。在早期C++引入静态成员函数之前,你会看到下面这样奇怪的写法:

(( CStaticMember*)⓪)->GetIntA();

这样的写法就是为了避免了对象. GetIntA()的操作从而避免了对象的实例化操作,如下所示

编译器生成的代码是先将ecx清⓪,然后直接调用CStaticMember::GetIntA函数。这种写法的优点就在于不用对进行对象实例化操作从而节省了时间和空间。这种写法最早由贝尔实验室的成员Jonathan Shopiro提出,他本人也是引入静态成员函数的主要倡导者。

野指针如果能保证不去动的话,其实①点问题都没有。所以关键问题不再数量上,而在于你知不知道哪个指针不能动。\", \"extras\": \"\", \"created_time\": ①④④③⑦⓪⑦⑧①⑨ · \"type\": \"answer

编后语:关于《为什么样要用静态成员函数?内存当中的野指针多了会对电脑运行产生什么样样的影响》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《K线图有什么样时机意义么?电脑CPU I7-4710和I7-4710HQ的区别好像还有个MQ》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题