当前位置: 首页 > news >正文

三亚文明城市建设服务中心报名网站空间站天宫vr全景

三亚文明城市建设服务中心报名网站,空间站天宫vr全景,seo自学网app,北京网络销售C中静态成员函数与静态成员变量(static )这篇介绍了静态成员函数与静态成员变量#xff0c;是我的读书笔记#xff0c;我希望它够简短但又比较全面#xff0c;起到复习的作用。如果有一些C知识记不清楚了#xff0c;它可以帮你很快回忆起来。复习C语言的static关键字(1)加在…C中静态成员函数与静态成员变量(static )这篇介绍了静态成员函数与静态成员变量是我的读书笔记我希望它够简短但又比较全面起到复习的作用。如果有一些C知识记不清楚了它可以帮你很快回忆起来。复习C语言的static关键字(1)加在局部变量的前面使之成为静态局部变量作用域还是在函数内部可是生存周期延长了。(2)加在全局变量的前面限定该变量作用域为文件作用域就是说即使其他文件使用了extern扩展作用域也不行。这在C语言的多人项目中非常有用避免了变量的重名。然而在C中这一功能已经被命名空间取代但是为了保持和C语言的兼容static还是有这样的功能。(3)加在函数定义或声明的前面限定函数作用域到文件作用域也是为了避免多个文件中有重名函数。当static关键字出现在类中当static出现在类的定义中便出现了静态成员变量和静态成员函数。静态成员是属于类的而不是属于某个对象的。即便没有任何一个实例类的静态成员变量也已经存在了而且还可能通过“类名::成员名”进行访问。类的静态成员函数也可以用相同的方式调用在类产生实例之前就调用成员方法典型应用是实现单例模式。(1)静态成员变量静态成员变量本质上是全局变量但是将和某些类关系紧密的全局变量写到类里面形式上成为一个整体更容易理解和维护。所以尽量使用静态成员变量吧减少全局变量的使用。普通成员变量每个对象都有各自的一份但是静态成员变量一共只有一份被所有的本类对象共享。如果使用sizeof运算符计算对象的大小得到的结果是不包含静态成员变量在内的。静态成员同样受到privatepublic等的限制。静态成员变量的一个典型应用就是用来计数生成的实例的个数。大体思路是设置一个名为num的静态成员变量并初始化为0在构造函数中num,析构函数中--num。这样num的值就是当前实例的个数。实际上这也带来了一个隐蔽的bug。看下面的代码class CNum {public:static int num;~CNum() { --num; }CNum() { num; }};int CNum::num 0;void fun(CNum n){ }int main() {CNum n;fun(n);fun(n);cout CNum::num endl;return 0;}结果-1num尽然成了一个负数难道析构函数比构造函数多调用了一次实际上不是的。当执行 fun(n); 语句时调用了复制构造函数这个函数因为我们没有给出实现所以是用的编译器默认提供的版本在这个构造函数中并没有num这条语句因此少计数了两次(两次调用fun(n))。解决的方法就是一定要提供自己写的复制构造函数并在函数体中加入 num;(2)静态成员函数静态成员函数内部不能调用非静态成员函数原因是非静态成员函数需要传入一个this指针这让静态成员函数很为难它并不知道与之相关的信息也就无法提供this指针。静态成员变量的初始化上面代码中的第8行  int CNum::num 0; 是静态成员变量的初始化。这可以视为是静态变量的定义(定义的同时初始化即便不初始化也需要这个定义)而把类内的 static int num; 视为一个声明这样的理解可以突出这样一个事实静态成员变量本质上是全局变量。注意在类外定义时加上“类名::”。对于常量成员变量我们知道初始化时一定要使用初始化列表那么当一个变量既是常量又是静态成员时(同时被const和static修饰)要怎么样初始化呢是像一般的静态成员变量一样在类外定义并初始化还是像一般的常量成员变量一样使用初始化列表呢答案时前者即在类外定义并初始化在类内声明就像下面那样class CNum {public:const static int num;};const int CNum::num 0;int main() {CNum n;return 0;}实际上完全可以把const int 视为一种数据类型它的地位和int一样。这样理解是有好处的比如从const int到int需要强制类型转换把他们看成两种类型这就自然而然。相应的const char 和char 也应该看成两种类型就好像它们完全没有什么特殊的关系一样。另外static const int类型和static const char 类型可以在类内直接初始化就是说都不需要在类外再次定义像下面这样class CNum {public:const static int a 19;};int main() { 8 cout CNum::a endl;    //输出19return 0;}感谢阅读希望能帮助到大家谢谢大家对本站的支持
http://www.pierceye.com/news/839723/

相关文章:

  • 手机网站开发前台架构专业群建设网站
  • 做网站设计怎么样网站ui怎么做的
  • 企业网站用织梦好吗ui培训的课程都有哪些
  • 临沂专业网站建设公司哪家好做网站的照片要多大像素
  • 山东滕州做网站技术电话wordpress网页登陆
  • 做公司网站的费用flash交互网站页面切换制作
  • 网络推广渠道有哪些百度手机seo
  • 重庆专业网站建设公司哪家好seo的中文意思是什么
  • 做品牌折扣微信推广的网站网站换主机换域名
  • 营销型网站有哪些建设流程怎样制作免费的网站
  • 天津建设工程计价网站手工加工网
  • 温州做美食网站网站建设的方案模板下载
  • 如何快速网站备案以用户为中心 建设学校网站
  • 宣传型网站有哪些宁波建设信息港网站
  • php网站开发是做什么的phpcms v9企业网站模板(简洁利于优化)
  • 什么是网站和网页wordpress启用插件出错
  • asp网站制作工具怎么样做国际网站生意
  • 签订网站建设合同山东建设工程招标网官方网站
  • 迅速建设企业网站外贸网站服务器选择
  • 建设网站详细流程wordpress建站数据库
  • 贵阳建立网站聊城网站建设设计
  • 网站怎么设置关键词百度网址大全首页设为首页
  • 中企动力网站怎么样怎么做公司内网网站
  • 求职网站网页模板一个网站可以做多少个小程序
  • 深圳市住房和建设局网站登录怎样在百度建网站
  • 外国做视频在线观看网站asp简单网站开发
  • 介绍移动互联网的网站有哪些做网站时怎么选择数据库类型
  • 工厂的网站在哪里做的免费建站的软件
  • 中国电子系统建设三公司网站网站建设上如何提高市场竞争力
  • 青海住房和建设厅网站电子商务网站建设与管理教案