static——静态变量和静态函数

举报
用户已注销 发表于 2021/11/19 04:05:13 2021/11/19
【摘要】 1,非类成员的静态变量 不是类成员的静态变量有两种:函数中的静态局部变量和函数外的静态全局变量。参考C语言存储类别、存储区一文,局部变量加static是函数结束之后,变量还在,全局变量加static是把作用域限制在本文件中。 2,作为类成员的静态变量 类成员变量加static,就可以用类直接使用成员,不需要对象。 需要注意的是,...

1,非类成员的静态变量

不是类成员的静态变量有两种:函数中的静态局部变量和函数外的静态全局变量。参考C语言存储类别、存储区一文,局部变量加static是函数结束之后,变量还在,全局变量加static是把作用域限制在本文件中。

2,作为类成员的静态变量

类成员变量加static,就可以用类直接使用成员,不需要对象。

需要注意的是,静态成员只是一个声明,还需要在类外面定义这个成员。


  
  1. class A {
  2. public:
  3. static int x;
  4. };
  5. int A::x = 10;
  6. class B :public A {
  7. };
  8. class C :public A {
  9. };
  10. int main()
  11. {
  12. B::x = 3;
  13. cout << C::x;
  14. return 0;
  15. }

输出:3

表明所有的子类都和父类共享同一个静态成员。

3,非类成员的静态函数

类似于全局变量,加static是把作用域限制在本文件中,只有文件所在的编译单位内可以使用这个函数。

4,作为类成员的静态函数

非静态的类成员函数,通过this指针确定访问哪个对象实例的数据。

类成员函数加static之后,没有this指针,调用时不会传递对象的引用,所以不能访问非静态的成员。

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/104502147

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。