C++ 之静态成员变量
静态成员变量的特点
在类内声明 在类外进行初始化。
#include <iostream>
using namespace std;
class Person{
public:
static int m_Age ; // 静态成员变量 在类内声明 在类外进行初始化
// 静态成员变量也是有权限的
private:
static int m_other ; // 私有属性在类外不能访问
};
int Person::m_Age = 10; // 类外初始化的实现
int Person::m_other = 23;
void test01(){
// 通过对象访问属性
Person p1;
p1.m_Age = 10;
Person *p2 = new Person;
p2->m_Age = 100;
cout <<"p1=" <<p1.m_Age <<" p2="<<p2->m_Age <<endl; // 100 100
delete p2;
// 通过类名访问属性
cout <<"通过类名进行访问:"<< Person::m_Age<<endl;
// cout <<"通过类名进行访问:"<< Person::m_other<<endl; // 不可访问
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}
运行结果:
p1=100 p2=100
通过类名进行访问:100
静态变量在编译的时候就分配了内存,这个内存叫全局静态区域。所以,对静态属性进行初始化时,必须在全局区进行初始化。与java类似,静态成员函数不能访问非静态的成员。类方法不能访问对象方法和属性。因为静态方法在编译的时候就已经初始化,而对象方法和属性在编译阶段还没分配内存。对象只有通过创建,对象的属性和方法才完成初始化。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/280245.html