我试着找出C + +很长一段时间,这是网站,设法给我广泛的和逻辑的C + +混乱的解释。你已经取得了C + +我的第一选择!
不管怎样,在你的文字“静态成员变量”标题下你的状态下;
“C++引入了两个新的使用static关键字时,应用于类:静态成员变量,静态成员的类。”
它不应该说“静态成员函数”
而不是“类”?
他是一个很好的问题,我不知道答案。由于静态成员属于类,而不是类的对象,我想在类的声明是视为一个静态成员声明,这实际上是在代码的定义体。因此,就像函数前向声明,这需要在向前声明和实际的定义有返回类型和参数类型,这将遵循同样的规则。
录音,csecond,和cthird可以声明为const对象,因为他们只打getid(),这是const。
这里的基本思想是,只有一个副本,s_nidgenerator是所有类型对象之间共享的东西。然而,每个对象都有它自己的m_nid值是不共享。
我们构建了一个新的东西的时候,一些s_nidgenerator构造函数复制当前值为不共享m_nid然后增量它。记住,当我们增加s_nidgenerator,这并不影响任何已分配的m_nid值!
首先,s_nidgenerator设置为1。在这一点上我们:
s_nidgenerator = 1
然后,我们构建了录音。
录音的构造函数复制s_nidgenerator值(1)为cfirst.m_nid然后增量s_nidgenerator2。录音的构造函数复制s_nidgenerator值(1)为cfirst.m_nid然后增量s_nidgenerator 2。
在这一点上我们:
cfirst.m_nid = 1
s_nidgenerator = 2
然后,我们构建了csecond。csecond的构造函数复制s_nidgenerator值(2)为csecond.m_nid,然后增量s_nidgenerator 3。
在这一点上我们:
cfirst.m_nid = 1
csecond.m_nid = 2
s_nidgenerator = 3
最后,我们构建了cthird。这将同样的方式为以前的构造函数。
在这一点上我们:
cfirst.m_nid = 1
csecond.m_nid = 2
cthird.m_nid = 3
s_nidgenerator = 4
请注意,s_nidgenerator不再使用。它是用来设置m_nid初始值。如果我们问一些对象的ID,它总是返回它的非共享m_nid价值。
1630

被折叠的 条评论
为什么被折叠?



