C++:静态成员 static关键字

静态成员:在成员变量和成员函数前加关键字static,称为静态成员

静态成员分为:

·静态成员变量

     所有对象共享同一份数据

     在编译阶段分配内存

     类内声明,类外初始化

#include<iostream>
using namespace std;
class person
{
public:
    static int m_A; //静态成员变量 类内声明
private:
    static int m_B; //静态成员变量也有访问权限
};
int person::m_A=10; // 类外初始化
int person::m_B=20;

void test1()
{
   //静态成员变量的两种访问方式:
   //1、通过对象
   person p1;
   p1.m_A = 100;
   cout<<"p1.m_A="<<p1.m_A<<endl;     //100

   person p2;
   p2.m_A = 200;//所有对象共享同一份数据
   cout<<"p1.m_A="<<p1.m_A<<endl;     //200
   cout<<"p2.m_A="<<p2.m_A<<endl;     //200
   //2、通过类名  由于静态成员变量不属于某个对象,因此可通过类名访问
   cout<<"m_A="<<person::m_A<<endl;
   //cout<<"m_B="<<person::m_B<<endl;//私有权限下不可访问

int main()
{
   test1();
   system("pause");
   retuen 0;
}
}

·静态成员函数

     所有对象共享同一个函数

     静态成员函数只能访问静态成员变量

#include<iostream>
using namespace std;
class person
{
public:
   static void func()
   {
      cout<<"func调用"<<endl;
      m_A = 100;
      //m_B = 100;//静态成员函数不可以访问非静态成员变量,无法区分是哪个对象上的m_B属性
   }
   static int m_A;//静态成员变量
   int m_B;
private:
   static void func2()
   {
      cout<<"func2调用"<<endl;
   }
};
int person::m_A = 10;

void test1()
{
   //静态成员函数的两种访问方式
   //1、通过对象
   person p1;
   p1.func();
   
   //2、通过类名  由于静态成员函数不属于某个对象,因此可通过类名访问
   person::func();

   //person::func2()//私有权限下不可被访问
}

int mian()
{
   test1();
   system("pause");
   return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值