静态成员函数一般情况下只能访问静态成员变量

静态成员函数一般情况下只能访问静态成员变量

ID:41130076

大小:26.50 KB

页数:5页

时间:2019-08-17

静态成员函数一般情况下只能访问静态成员变量_第1页
静态成员函数一般情况下只能访问静态成员变量_第2页
静态成员函数一般情况下只能访问静态成员变量_第3页
静态成员函数一般情况下只能访问静态成员变量_第4页
静态成员函数一般情况下只能访问静态成员变量_第5页
资源描述:

《静态成员函数一般情况下只能访问静态成员变量》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、静态成员函数一般情况下只能访问静态成员变量,因为不接受隐含的this指针。另外作为类的静态成员函数,不用声明对象,便可直接调用,例如类A的静态成员函数fun();A::fun();1、主要用于封装全局变量和全局函数。以避免在文件作用域内包含带外部连接的数据。例如全局变量:intpath;intpara1;解决办法:设计一个全局类,并将这些全局名称声明为静态变量,并编写静态函数来调用这些变量。classGlobal{staticints_path;staticints_para;private:Global();//不实现,

2、避免无意中的实例化public://manipulatorsstaticvoidsetPath(intpath){s_path=path;}staticvoidsetPara(intpara){s_para=para;}//accessorsstaticintgetPath(){returns_path;}staticintgetPara(){returns_para;}}2、对自由函数的封装在.h文件的文件作用域内避免使用自由函数(运算符函数除外);在.c文件中避免使用带有外部连接的自由函数,因此可以使用静态成员函数进行

3、处理。例如:intgetPara();intgetPath();我们可以通过声明一个结构的静态方法代替:structSysUtil{staticintgetPath();staticintgetPara();}这样,唯一有冲突危险的就是出现类名SysUtil了。前言:  本文只是本人对C++中关于静态类型的一个总结,如错误之处,请大家帮我改正。我分两个方面来总结,第一方面主要是相对于面向过程而言,即在这方面不涉及到类,第二方面相对于面向对象而言,主要说明static在类中的作用。一、在面向过程设计中的static关键字1、

4、静态全局变量定义:在全局变量前,加上关键字static该变量就被定义成为了一个静态全局变量。特点:  A、该变量在全局数据区分配内存。  B、初始化:如果不显式初始化,那么将被隐式初始化为0。  C、访变量只在本源文件可见,严格的讲应该为定义之处开始到本文件结束。  例(摘于C++程序设计教程---钱能主编P103):        //file1.cpp        #include        voidfn();        externintn;        voidmain()   

5、     {          n=20;          cout<        staticintn;//定义静态全局变量,初始化为0;        voidfn()        {          n++;          cout<

6、错误。  D、文件作用域下声明的const的常量默认为static存储类型。2、静态局部变量定义:在局部变量前加上static关键字时,就定义了静态局部变量。特点:  A、该变量在全局数据区分配内存。  B、初始化:如果不显式初始化,那么将被隐式初始化为0。  C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。3、静态函数(注意与类的静态成员函数区别)定义:在函数的返回类型前加上static关键字,函数即被定义成静态函数。特点:  A、静态函数只能在本源

7、文件中使用(这是与普通函数区别)  例(摘于C++程序设计教程---钱能主编P103):        //file1.cpp        voidfn();        voidstaticFn()        voidmain()        {          fn();          staticFn();        }        //file2.cpp        #include        staticvoidstaticFn();        voidfn

8、();        voidfn()        {          staticFn();          cout<<"thisisfn()";        }        voidstaticFn()        {          cout<<"thisisstaticFn(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。