一,局部静态变量
#include<iostream>
#include<string>
using namespace std;
class Student
{
int n;
string name;
public:
void set(string thename)
{
static int number=0;//局部静态变量,从运行起到代码结束都保存在内存中
name=thename;
n=++number;
}
void prin(){cout<<name<<"->students are"<<n<<" numbers"<<endl;}
};
void fn()
{
Student s1;
s1.set("Jenny");
s1.prin();//此时number=2,n=2
Student s2;
s2.set("Randy");//此时number=3,n=3
s1.prin();//输出的是s1中的n=2
s2.prin();//输出的是s2中的n=3
}
void main()
{
Student s;
s.set("Smith");
s.prin();//此时number=1,n=1
fn();
s.prin();//输出的是s中的n=1
}
二,静态成员
#include<iostream>
#include<string>
using namespace std;
class Student
{
static int number;//静态成员,类的所有对象共享
string name;
public:
void set(string thename)
{
name=thename;
++number;
}
void prin(){cout<<name<<"->students are"<<number<<" numbers"<<endl;}
};
int Student::number=0;//必须进行初始化
void fn()
{
Student s1;
s1.set("Jenny");
s1.prin();
Student s2;
s2.set("Randy");
s1.prin();
s2.prin();
}
void main()
{
Student s;
s.set("Smith");
s.prin();
fn();
s.prin();
}
三,静态成员函数
#include<iostream>
#include<string>
using namespace std;
class Student
{
static int number;//静态成员
string name;
public:
void set(string thename)
{
name=thename;
++number;
}
static void prin();//静态成员函数,不受对象的牵制
};
int Student::number=0;
void Student::prin(){cout<<number<<" numbers"<<endl;}//不能写成{cout<<name<<number<<endl;}因为静态成员函数可以不捆绑对象调用,所有没有对象的信息name
void fn()
{
Student s1;
s1.set("Jenny");
s1.prin();//number=2
Student::prin();//number=2
cout<<endl<<endl;
Student s2;
s2.set("Randy");
s1.prin();//number=3
s2.prin();//number=3
Student::prin();//number=3
cout<<endl<<endl;
}
void main()
{
Student s;
s.set("Smith");
s.prin();//number=1
cout<<endl;
fn();
Student::prin();//number=3
}
2721

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



