static在c++中的作用

  1. declarations of namespace members with static storage duration and internal linkage;
    definitions of block scope variables with static storage duration and initialized once;
    declarations of class members not bound to specific instances

  2. static 函数内不能访问非静态成员函数和非静态数据成员,因为它没有this指针,非静态成员函数和非静态数据成员对于具体的实例才有意义

  3. static在头文件中修饰全局变量,被多个源文件include后会存在多个内存拷贝; const也具有类似的内部链接属性,但因为编译器常量折叠并不会存在多个内存拷贝。
    C++头文件中定义static/const
    Defining global constant in C++

  4. static在匿名空间是多余的,因为匿名空间本身就具有内部链接属性;static const修饰全局变量和const修饰全局变量效果一样。

类似

this指针
obj - const; print-const
obj.print();  =  print(&obj1);
即把当前的对象obj的this指针传递到print()函数

但静态成员函数可以访问静态成员变量,全局变量,和自身的函数形参。所以可以显式在静态函数中引入了一个对象,然后通过这个对象来无差别权限地访问各个成员函数和变量。

static void A::Instance(A * const pa);
void A::Instance(A * const pa){ 
	pa->func(); 
}
func()可以是非静态函数

参考链接
C++中的static关键字的总结
类的静态成员函数与非静态成员函数的互访

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值