C/C++培训
达内IT学院
400-996-5531
我们先来说说static这个关键字,这也是面试中面试官最喜欢问的一个问题了,对C语言了解的同学应该知道,在C语言中,关键字static可以用来修饰变量和函数,我们一起来回顾下下C语言中static关键字的作用。
static加在局部变量的前面改变其存储类型使之成为静态局部变量,会延长它的生存周期,但是注意不会改变其作用域!!!
static加在全局变量的前面会限制该变量作用域为文件作用域,也就是说static全局变量只能在定义该变量的文件中使用,不能被其它文件使用。
加在函数定义或声明的前面,也是限制函数作用域到文件作用域。
到了C++中,关键字static除了继续保留上面的特性外,还可以用来修饰类的成员变量和成员函数,使之成为静态成员变量和静态成员函数,静态成员变量和静态成员函数统称为静态成员。
在使用静态成员的时候,有一些规则限制,本文通过几个简单的例子来总结静态成员使用规则,希望大家通过阅读本文能够对类的静态成员变量和成员函数有更为深刻的认识。
1sizeof不将静态成员变量的大小计算在内
首先看第一个例子,例子很简单,有点C++基础的同学都能看懂,这里重点是通过例子来说明C++静态成员的一些特性和容易出错的地方
从运行结果看,sizeof(Test)为4,只是普通成员m_val的大小,验证了sizeof运算符不会将静态成员变量的大小计算在内,
此外需要注意的是,上面代码的第20行 int Test::m_count = 0;是静态成员变量的初始化,如果在使用静态成员变量的时候不进行初始化,链接的时候会出错,有兴趣的同学可以试试将第20行注释掉,再编译看看会出现什么情况。
2可以通过类名来访问静态成员
静态成员是属于类的,而不是属于某个对象的。即便没有任何一个实例,类的静态成员变量也已经存在了,因此静态成员除了能够和普通成员一样通过对象访问外,还可以通过类名访问, 访问形式为 类名::成员名
此外,还需要注意的是,静态成员同样受到private,public等的限制,因此在类外通过类名访问时,需要其访问权限为public。
3静态成员函数不能访问类的非静态成员
由于静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间,因此在静态成员函数中访问非静态成员变量或者调用非静态成员函数就会出错。
好了,本文到此已经结束了,是不是很简单,正是因为简单在平时的时候就更应该注意,否则真的是太low了。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved