静态成员:
静态变量是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。
静态成员分为:静态成员变量;静态成员函数。
静态成员变量:
1、所有对象共享一份数据;
2、在编译阶段分配内存;
3、类内声明,类外初始化;
4、静态成员变量也是有访问权限的;
# include <iostream>
using namespace std;
# include <string>
class Person {
public:
static int A; //静态变量成员,类内声明
private:
static int B;//静态成员变量也是有访问权限的
};
int Person::A = 100; //类外初始化
int Person::B = 200;
void test_01() {
Person p1;
cout << p1.A << endl;
Person p2;
p2.A = 666;
cout << p1.A << endl; // 所有对象共享同一份数据
cout << p2.A << endl; // 所有对象共享同一份数据
//cout << "B = " << p2.B << endl; //私有权限访问不到
}
int main() {
test_01();
system("pause");
return 0;
}
静态成员函数:
1、所有对象共享同一个函数;
2、静态成员函数只能访问静态成员变量
3、静态成员函数也是有访问权限的;
# include <iostream>
using namespace std;
# include <string>
class Person {
public:
static void func() {
cout << "func调用" << endl;
m_A = 100;
//m_B = 100; //错误,不可以访问非静态成员变量
}
static int m_A; //静态成员变量
int m_B; // 错误,不可访问非静态成员变量;
private:
//静态成员函数也是有访问权限的
static void func2() {
cout << "func2调用" << endl;
}
};
int Person::m_A = 10;
void test_01() {
Person p1;
p1.func();
//Person::func2(); //私有权限访问不到
}
int main() {
test_01();
system("pause");
return 0;
}