• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

C++ 之静态成员变量

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类似,静态成员函数不能访问非静态的成员。类方法不能访问对象方法和属性。因为静态方法在编译的时候就已经初始化,而对象方法和属性在编译阶段还没分配内存。对象只有通过创建,对象的属性和方法才完成初始化。

posted @ 2022-08-13 00:00  编织快乐  阅读(176)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3