标签:初始化 变量 静态 Age C++ Person int 类外
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类似,静态成员函数不能访问非静态的成员。类方法不能访问对象方法和属性。因为静态方法在编译的时候就已经初始化,而对象方法和属性在编译阶段还没分配内存。对象只有通过创建,对象的属性和方法才完成初始化。
标签:初始化,变量,静态,Age,C++,Person,int,类外 来源: https://www.cnblogs.com/lofly/p/16581785.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。