1、静态成员变量
当类中有静态成员变量时,所有对象共用这个静态变量,它不单独属于任何一个对象。需要类内声明,类外访问。在编译阶段分配内存。
访问方式有两种:通过对象访问;通过类名访问。访问权限也是有的,这里代码没体现。
#include <iostream>
#include <string.h>
using namespace std;
class Person{
public:
static int temp;
};
int Person::temp = 100; // 初始化静态变量
void test(){
Person p1;
cout << p1.temp << endl; // 通过对象访问静态变量
p1.temp = 200;
Person p2;
cout << p2.temp << endl;
p2.temp = 300;
cout << Person::temp << endl; // 通过类名访问静态变量
}
int main() {
test();
return 0;
}
结果如下,改变p1的静态变量,也会改变p2的静态变量。?
2、?静态成员函数
静态成员函数和静态成员变量都是所有对象共用的,并且它只能访问静态成员变量。不能访问非静态成员变量是因为无法区分到底访问的是哪个对象的非静态成员变量。
访问方式有两种:通过对象访问;通过类名访问。访问权限也是有的,这里代码没体现。
#include <iostream>
using namespace std;
class Person{
public:
static void func(int num){
temp = num;
}
static int temp;
};
int Person::temp = 100; // 初始化静态变量
void test(){
Person p1;
cout << p1.temp << endl;
Person p2;
p2.func(200);
cout << p1.temp << endl;
Person::func(300);
cout << p1.temp << endl;
}
int main() {
test();
return 0;
}
|