C语言关键字
在文件范围的教训和关键字,你知道静态变量保持他们的价值观,甚至不在他们超出范围的破坏。比如说呢。
int GenerateID()
{
static int s_nID = 0;
return s_nID++;
}
int main()
{
std::cout << GenerateID() << std::endl;
std::cout << GenerateID() << std::endl;
std::cout << GenerateID() << std::endl;
return 0;
}
This program prints:
0
1
2
请注意,s_nid一直保持它的价值的跨多个函数调用。
static关键字有另一种意思当应用到全局变量-这改变了他们从全球范围的文件范围。因为全局变量通常是由程序员避免,和文件的范围变量是全局变量仅限于一个单一的文件,关键字通常不用于这方面的能力。
静态成员变量
C++引入了两个新的使用static关键字时,应用于类:静态成员变量,静态成员的类。我们进入关键字适用于成员变量之前,先考虑下面的类:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class
Something{private: int
m_nValue;public: Something()
{ m_nValue = 0; }};int
main(){ Something
cFirst; Something
cSecond; return
0;} |
当我们instantiate a class对象,每个对象获取它的所有成员变量的正常复制。本案例中,因为我们有两个类对象的感知的东西,我们最终有两个副本_ cfirst M体内部,和一个内csecond。cfirst→M _体是不同的比csecond→M _体。
一类的成员变量可以用静态的静态的关键字。静态成员变量只存在一次节目中,不论有多少类是对象的定义。单程去想它是所有对象的类的静态变量A股。考虑下面的程序:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class
Something{public: static
int
s_nValue;};int
Something::s_nValue = 1;int
main(){ Something
cFirst; cFirst.s_nValue
= 2; Something
cSecond; std::cout
<< cSecond.s_nValue; return
0;} |
1337

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



