C++的class中静态变量static的注意事项

一,static在类中修饰成员的含义

被修饰的成员:属于类,不再属于对象
普通成员只有在实例化对象时,才会开辟空间,static成员在编译时就有空间
在这里插入图片描述

二,static修饰成员变量

1、static修饰的成员只能在类内声明,不能再类内定义。

class  Date
{
public:
	static  int  num;		!!只能声明,不可以赋值!!

};
int Date::date =10;		    !!在类外定义!!

    
  
2、即便不实例化对象,类外也可以调用此静态函数

void test01()
{
	cout<< Date::date ;
}
或者直接赋值(前提:不在private内)
Date::date=200;

  
  
3、若实例化多个对象,通过不同对象访问的是同一个静态变量

Date ob1;
Date ob2;
ob1.num=300;       !!此时num变为300
cout<<ob2.num ;   //编译出同样为300

  
  
  
  

三,static修饰private成员函数

1 实例化对象访问:
class Date
{
private:
	static int num;
public:
	int getnum(void)
	{
	return  num;
	}
};

int Date::num =10;

必须实例化对象,才能访问

void test01()
{
	!!错误!!: cout<<Date::num;
	!!错误!!: cout<<Date::getnum();
!!正确!!:
	Date ob1;
	cout<<  ob1.getnum();

注意: 此static变量存在真空期,因为num从一开始就有地址了,但是实例化对象时才开辟
  
  

2 直接访问:

只需要在接口函数前也添加static即可:

class Date
{
private:
	static int num;
public:
	static int getnum(void)    
	{
	return  num;
	}
};

int Date::num =10;

不实例化对象也可以直接访问:

cout<< Date:getnum();

  
  
  

四,static修饰成员函数

就是3.2的内容。
静态成员函数不能访问非静态成员数据,
所以,static静态成员函数的意义就是:
                  访问静态成员变量

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值