C++ 静态成员变量

静态成员变量

1、成员变量和成员函数前加上关键字static,称为静态成员。
2、静态成员变量:所有对象共享一份数据、在编译阶段分配内存、类内声明,类外初始化。

class Person
{
    
    
public:
	static int m_A;
private:
	static int m_B;
};
int Person::m_A = 100;
int Person::m_B = 100;

上诉为类Person的定义,下面代码作为检测

Person p1;
	p1.m_A = 150;
	cout << "p1中的m_A为:" << p1.m_A << endl;//通过对象访问静态成员变量

	Person p2;
	p2.m_A = 200;
	cout << "p1的m_A成员变量为:" << p1.m_A << endl;
	cout << "p2的m_A成员变量为:" << p2.m_A << endl;

	p1.m_A = 300;
	cout << "p1和p2的m_A成员变量为:" << Person::m_A << endl;//通过类名访问静态成员变量

检验结果如下:

p1中的m_A为:150
p1的m_A成员变量为:200
p2的m_A成员变量为:200
p1和p2的m_A成员变量为:300
请按任意键继续. . .

3、静态成员变量的两种访问方式:
(1)、通过对象访问静态成员变量;
(2)、通过类名访问静态成员变量;
4、静态成员函数:
(1)、所有对象共享同一个函数;
(2)、静态成员函数只能访问静态成员变量

class Person
{
    
    
public:
	static int m_A;
	int m_B;

	static void func1()
	{
    
    
		m_A = 150;
		//m_B = 200;  非静态成员变量不可访问
		cout << "Person中的m_A为:"<<Person::m_A << endl;
	}

private:
	static void func2()
	{
    
    
		cout << "静态成员函数func2()的调用" << endl;
	}
};
int Person::m_A = 10;

由上诉代码可知,静态成员变量由类内声明,类外初始化,静态成员函数func1只能访问静态成员变量,不能访问非静态成员变量。
下诉代码作为检验

//1、通过对象访问
	Person p1;
	p1.func1();

	//2、通过类名访问
	Person::func1();

输出检验如下:

Person中的m_A为:150
Person中的m_A为:150
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/Little_XWB/article/details/108184208