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

北京建站公司推荐首推万维科技免费推广软件排行榜

北京建站公司推荐首推万维科技,免费推广软件排行榜,建站合肥网络公司seo,如何套用别人网站模板目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中#xff0c;关键字 static 在不同的应用场景下#xff0c;有不同的作用#xff0c;这… 目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中关键字 static 在不同的应用场景下有不同的作用这里总结一下避免在使用时弄混。 我按照以下的逻辑来分类 static 的作用场景 static 作用在变量上 static 作用在全局变量上限制全局变量在本文件上static 作用在局部变量上即使离开变量作用域也保存变量值比如用作计数器static 作用在成员变量上 对象间共享该变量 static 作用在函数上 static 作用在函数上函数可见性限制在本文件中即使函数被声明在头文件引用该头文件的其他 cpp 文件也无法使用该函数static 作用在成员函数上 static 作用在变量上 static 作用在全局变量上 对于普通的全局变量来说同一项目中的其他文件也可访问相同的全局变量若为了限制全局变量在本文件中则需要在这个全局变量上加一个 static这样该变量就只能在本文件可见。 我们先来演示一下如何在一个文件中使用另一个文件的全局变量。 假设有 a.cpp 和 b.cpp我们在 b 中定义一个全局变量 staticValue然后在 a 中打印出来。 // b.cpp // 全局变量 int staticValue 10;void staticMain() {// ... }// a.cpp #include iostream using namespace std;// 必须通过 extern 关键字在整个项目搜索 staticValue extern int staticValue;int main() {cout 在 a.cpp 中可见 staticValue endl; // 在 a.cpp 中可见10 }显然我们成功在 a 文件中使用到了 b 文件内定义的全局变量。 现在我希望将 staticValue 的全局可见性限制在 b 文件内不让其他文件也可以访问于是我在 b 的 staticValue 前加上 static 关键字 // b.cpp // 全局变量 static int staticValue 10;void staticMain() {// ... }将代码如上修改后当我们再次运行时程序会在链接阶段报错报错信息如下根据描述可见在 a 的 obj 文件汇编后生成的对象文件里没有解析到 staticValue 这个变量达到了我们限制全局变量在本文件内的目的 static 作用在局部变量上 static 作用在局部变量上即使离开变量作用域也保存变量值比如用作计数器。效果如下面的代码所示 可以看到num 的值是逐渐累加的过程 #include stdio.hvoid count();int main(void) {int i0;for (i 0;i 5;i){count();}return 0; } void count() {/*声明一个静态局部变量*/static int num 0;num;printf(%d\n,num); // 1 2 3 4 5 6 }static 作用在成员变量上 在这种情况下static 标记的变量可以在多个对象之间共享该变量在底层上因为 static 标记的变量并非存在于对象的内存空间而是存在于数据区中这涉及到 C 语言的内存布局。 具体的效果如下面代码所示我们声明了 3 个学生对象分别是 zhangsanlisi 和 wangwu并在定义他们的时候给他们传入了各自的初始分数最终求得三个人的总分。 #include iostream using namespace std;class student { private:static int sumScore;int myScore; public:student(int m):myScore(m){sumScore myScore;}int getSumScore() {return sumScore;} };int student::sumScore 0; // 静态成员变量必须在类外被初始化int main() {student zhangsan(10);student lisi(20);student wangwu(30);cout wangwu.getSumScore() endl; // 60return 0; }关于 static 在修饰成员变量时的注意事项 static 修饰的成员变量属于类在对象间共享因此某个对象修改了该变量对其他对象也是可见的静态成员变量的初始化必须要在类外如上面的代码所示静态成员变量的内存分配是发生在类外初始化的时候而不是类或者对象创建的时候静态成员变量可以通过类也可以通过对象来访问但必须遵守访问可见性publicprivate 和 protected static 作用在函数上 static 作用在函数上 它起到的效果和 static 作用在全局变量上类似将函数的可见性限制在本文件内。 这里我们直接举被 static 修饰的函数的例子。 假设在 b.cpp 中我们定义了一个 bMain() 的函数在 b.h 的头文件中进行声明在 a.cpp 中引入这个头文件并调用 bMain()那么是可以正常调用的。 现在我们在 b.cpp 中在 bMain() 前加上一个 static 关键字那么 a.cpp 就不能在调用了。 // b.cpp #include iostream using namespace std;static void bMain() {cout bMain endl; }// b.hpp void bMain();// a.cpp #include b.hppint main() {bMain();return 0; }执行上述代码我们可以看到和 “static 作用在全局变量上” 小节类似的报错问题 static 作用在成员函数上 静态成员函数具有和静态成员变量类似的性质和作用一般可以用这种方式来确定类创建了多少个对象 静态成员函数在对象之间共享或者说它独立于对象之外可以通过对象来调用静态成员函数也可以通过类名来调用静态成员函数静态成员函数可以访问静态成员变量或其他静态成员函数但不能使用当前对象指针 #include iostream using namespace std;class student { private:static int sumObj; public:student() {sumObj 1;}static int getObjNum() {return sumObj;} };int student::sumObj 0; // 静态成员变量必须在类外被初始化int main() {student zhangsan;student lisi;student wangwu;cout student 有几个对象 student::getObjNum() endl; // 3return 0; }可以看到最终我们输出了 3 个对象
http://www.hkea.cn/news/14525083/

相关文章:

  • 做网站申请域名空间急招程序员
  • 什么是企业营销网站有哪些做的好的小众网站
  • 调查问卷网站建设方案做网站有哪几种语言
  • 江西营销网站建设站内推广方式有哪些
  • 做网站产品资料表格网站托管服务提供商
  • 特效音网站wordpress主导航菜单
  • 为什么没人做同城购物网站网站开发保密协议范本
  • 从事网站开发学什么专业昆山网站建设秦皇岛
  • 网站怎么添加关键词网站域名在哪里买
  • 怎么做熊掌号网站响应式网站难做
  • wordpress调用代码高平网站优化公司
  • 企业做微网站wordpress eaccelerator
  • 上海哪家做网站龙华营销型网站建设
  • 网站怎么做优化wordpress产品介绍
  • 哔哩哔哩网站分析做网站本溪
  • wordpress获取4条文章标题优化方案历史
  • 国企网站建设会议纪要照明设计师培训
  • 网站文案怎么做国外企业画册设计网站
  • 德州做网站优化百度seo关键词排名优化软件
  • 建设厅八大员报名网站太原提高网站排名
  • 网站网络优化服务中端网站建设公司
  • 网站推广专员面试谷歌搜索引擎 google
  • 光华路网站建设做婚纱网站的步骤
  • 做网站都用什么软件wordpress 模板 教程
  • 网站项目书范文wordpress homepage
  • 咸宁网站定制外贸营销软件
  • 建站公司代码网站推荐
  • 哪个网站有ae免费模板2012服务器如何做网站
  • 无锡工程建设中心网站挣钱最快的小游戏
  • 网站正在建设中a手机版app安装器