静态成员
静态成员是在所有对象中共享的成员,通过static来修饰
1.定义静态成员
1.1 静态变量
类中定义的静态变量,必须在类内声明数据,在类外初始化赋值
c++
class Person {
public:
static int a;
};
int Person::a = 666;1.2 静态常量
类中定义的静态常量,切数据类型是整形(int、short、long、long、long、char、bool)字符和布尔也是以整形存储,则允许在定义时初始化赋值,const写在static前后都可
c++
class Person {
public:
static const int a = 666;
const static int b = 666;
static const double PI;
};
double Person::PI = 3.14;2.访问静态成员
2.1 创建对象访问
静态成员属于一个类,而不是属于每个对象,因此每个对象对静态成员访问时,访问的都是同一个地址
c++
#include<iostream>
using namespace std;
class Person {
public:
static int a;
};
int Person::a = 666;
int main() {
Person p1;
Person p2;
cout << p1.a << endl; // 666
cout << p2.a << endl; // 666
cout << &p1.a << endl;
cout << &p2.a << endl;
return 0;
}
当我们用其中一个对象将静态变量修改时,其他对象再次访问该静态变量,也是已经被修改过的
c++
#include<iostream>
using namespace std;
class Person {
public:
static int a;
};
int Person::a = 666;
int main() {
Person p1;
Person p2;
cout << p1.a << endl; // 666
cout << p2.a << endl; // 666
p1.a = 777;
cout << p1.a << endl; // 777
cout << p2.a << endl; // 777
return 0;
}2.2 通过类访问
静态成员的好处就是,可以不用创建对象,直接通过类访问
c++
#include<iostream>
using namespace std;
class Person {
public:
static int a;
};
int Person::a = 666;
int main() {
cout << Person::a << endl; // 666
Person::a = 777;
cout << Person::a << endl; // 777
return 0;
}