C++ 类内静态成员

在程序运行时分配,非静态成员在实例化时分配

作用域在类内,通过发消息来引用

类外初始化,不能通过初始化列表来初始化
int ::num=0;

所有成员共享静态成员空间(只分配一次)

非静态方法只属于对象
静态成员方法属于对象和类,只能访问静态成员

类内类外引用(不能破坏封装性)
1、对象引用:
对象.静态成员变量
2、类引用:
类::静态变量

#include<iostream>
#include<string>
using namespace std;

class people
{
public:
protected:
	string name;//复杂类型
	short age;
private:
	static int num;//统计people实例化次数
	//静态成员在程序运行时分配,不在此初始化
	//静态成员,属于对象,属于类
public:
	people()
	{
		num++;
	}
	//非静态方法,只属于对象
	int getnum()
	{
		return num;
	}
	//静态方法,属于对象,属于类
	static int givenum()
	{
		//cout<<age<<endl;报错,只能访问静态变量
		//getnum();报错,非静态方法,只能对象访问
		return num;
	}
};
//初始化
int people::num=0;
int main()
{
	people p1,p2,p3;//分配非静态空间
	cout<<p1.getnum()<<endl;
	cout<<people::givenum()<<endl;//调用静态方法
	return 0;
}

结果
3
3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值