c++中静态成员变量和静态成员函数

静态成员变量

在一个类中,若将一个成员变量声明为static,这种成员成为静态成员变量,与一般的数据成员不同,无论建立了多少个对象,都只想有一个静态数据的拷贝,静态成员变量,属于某个类,所有对象共享
静态变量,在编译阶段就分配空间,对象还没有创建时,就已经分配空间

  1. 静态成员变量必须在类内中声明,在类外定义
  2. 静态数据成员不属于某个对象,在为对象分配空间中不包括静态成员所占空间
  3. 静态数据成员可以通过类名或者对象名来引用

静态成员函数

  1. 可以访问静态的成员变量,不可以访问普通的成员变量

  2. 普通成员函数 都可以访问

  3. 静态成员函数也有权限

  4. 可以通过对象访问,也可以通过类名进行访问

      #include<iostream>
     	
     	using namespace std;
     	
     	
     	
     	class Person
     	{
     	public:
     		Person()
     		{
     			//m_Age = 10;
     		}
     	
     	
     		static int m_Age;//加入static 静态成员变量,会共享数据
     		//静态成员变量,类内声明,类外初始化
     		int m_A;
     	
     		//静态成员函数
     		//1.不可以访问  普通的成员变量
     		//2.可以访问	静态成员变量
     		//3.静态成员函数也是有权限的
     		static void func()
     		{
     			//m_A = 10;
     			m_Age = 100;
     			cout << "func调用" << endl;
     		}
     	
     		//普通成员函数,可以访问普通成员变量,也可以访问静态成员变量
     	
     		void myFunc()
     		{
     			m_A = 10;
     			m_Age = 100;
     		}
     	
     	private:
     		static int m_other;//私有权限,类外不能访问
     	
     		static void func2()
     		{
     			cout << "func2调用" << endl;
     		}
     	
     	};
     	
     	int Person::m_other = 0;
     	
     	int Person::m_Age = 0;//类外初始化
     	
     	
     	void test01()
     	{
     		//1.通过对象访问属性
     		Person p1;
     		p1.m_Age = 10;
     	
     		Person p2;
     		p2.m_Age = 20;
     	
     		cout << "p1=" << p1.m_Age << endl;
     		cout << "p2=" << p2.m_Age << endl;
     		//共享数据,都是20,以最近一次赋值为准
     	
     		//2.通过类名访问属性
     		//因为通过类名访问,所以不能在类内初始化
     		cout << "通过类名访问Age" << Person::m_Age << endl;
     	
     		//cout << "other=" << Person::m_other << endl;//私有权限在类外无法访问
     	
     		//静态成员函数调用
     		//不可以访问 普通的成员变量
     		p1.func();
     		p2.func();
     		Person::func();
     	
     		//Person::func2();//静态成员函数设为私有,类外不能访问
     	}
     	
     	
     	
     	
     	int main()
     	{
     	
     		test01();
     		system("pause");
     		return 0;
     	}
    

const静态成员属性

如果一个类的成员,既要实现共享,又要实现不可改变,就用static const 修饰

定义静态const数据成员时,最好在类内部初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值