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

网站建设怎样上传程序南宁网络推广有几家

网站建设怎样上传程序,南宁网络推广有几家,企业网站推广的方法有哪几种,怎么做国际网站首页目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中,关键字 static 在不同的应用场景下,有不同的作用,这…

目录

  • 前言
  • static 作用在变量上
    • static 作用在全局变量上
    • static 作用在局部变量上
    • static 作用在成员变量上
  • static 作用在函数上
    • static 作用在函数上
    • static 作用在成员函数上

前言

在 C/C++ 中,关键字 static 在不同的应用场景下,有不同的作用,这里总结一下,避免在使用时弄混。

我按照以下的逻辑来分类 static 的作用场景

  1. static 作用在变量上
    1. static 作用在全局变量上:限制全局变量在本文件上
    2. static 作用在局部变量上:即使离开变量作用域,也保存变量值,比如用作计数器
    3. static 作用在成员变量上 :对象间共享该变量
  2. static 作用在函数上
    1. static 作用在函数上:函数可见性限制在本文件中(即使函数被声明在头文件,引用该头文件的其他 cpp 文件也无法使用该函数)
    2. static 作用在成员函数

static 作用在变量上

static 作用在全局变量上

对于普通的全局变量来说,同一项目中的其他文件也可访问相同的全局变量,若为了限制全局变量在本文件中,则需要在这个全局变量上加一个 static,这样该变量就只能在本文件可见。

我们先来演示一下,如何在一个文件中使用另一个文件的全局变量。

假设有 a.cppb.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() {// ...
}

将代码如上修改后,当我们再次运行时,程序会在链接阶段报错,报错信息如下,根据描述可见在 aobj 文件(汇编后生成的对象文件)里没有解析到 staticValue 这个变量,达到了我们限制全局变量在本文件内的目的
在这里插入图片描述

static 作用在局部变量上

static 作用在局部变量上,即使离开变量作用域,也保存变量值,比如用作计数器。效果如下面的代码所示

可以看到,num 的值是逐渐累加的过程

#include <stdio.h>void count();int main(void)
{int i=0;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 个学生对象,分别是 zhangsan,lisi 和 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 在修饰成员变量时的注意事项

  1. static 修饰的成员变量属于类,在对象间共享,因此某个对象修改了该变量,对其他对象也是可见的
  2. 静态成员变量的初始化必须要在类外,如上面的代码所示
  3. 静态成员变量的内存分配是发生在类外初始化的时候,而不是类或者对象创建的时候
  4. 静态成员变量可以通过类,也可以通过对象来访问,但必须遵守访问可见性(publicprivateprotected

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.hpp"int main()
{bMain();return 0;
}

执行上述代码,我们可以看到和 “static 作用在全局变量上” 小节类似的报错问题
在这里插入图片描述

static 作用在成员函数上

静态成员函数具有和静态成员变量类似的性质和作用,一般可以用这种方式来确定类创建了多少个对象

  1. 静态成员函数在对象之间共享,或者说它独立于对象之外
  2. 可以通过对象来调用静态成员函数,也可以通过类名来调用静态成员函数
  3. 静态成员函数可以访问静态成员变量或其他静态成员函数,但不能使用当前对象指针
#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://continuo.ybmp.cn
http://scagliola.ybmp.cn
http://jilin.ybmp.cn
http://hydroperoxide.ybmp.cn
http://duplex.ybmp.cn
http://teaplanting.ybmp.cn
http://cariole.ybmp.cn
http://matchlock.ybmp.cn
http://springhalt.ybmp.cn
http://form.ybmp.cn
http://christendom.ybmp.cn
http://conch.ybmp.cn
http://torsel.ybmp.cn
http://the.ybmp.cn
http://nebulated.ybmp.cn
http://sortable.ybmp.cn
http://shillong.ybmp.cn
http://soldi.ybmp.cn
http://mayor.ybmp.cn
http://ochlophobia.ybmp.cn
http://glumose.ybmp.cn
http://kite.ybmp.cn
http://optionally.ybmp.cn
http://dither.ybmp.cn
http://rifacimento.ybmp.cn
http://live.ybmp.cn
http://finned.ybmp.cn
http://prancy.ybmp.cn
http://struthonian.ybmp.cn
http://cassino.ybmp.cn
http://bimodal.ybmp.cn
http://playwrite.ybmp.cn
http://depict.ybmp.cn
http://crissa.ybmp.cn
http://trotskyite.ybmp.cn
http://asbolite.ybmp.cn
http://tenderer.ybmp.cn
http://phyletic.ybmp.cn
http://virgin.ybmp.cn
http://leadin.ybmp.cn
http://loanee.ybmp.cn
http://sorbonnist.ybmp.cn
http://realschule.ybmp.cn
http://unseasoned.ybmp.cn
http://monoestrous.ybmp.cn
http://cinderella.ybmp.cn
http://siscowet.ybmp.cn
http://soften.ybmp.cn
http://angular.ybmp.cn
http://everwhich.ybmp.cn
http://scoria.ybmp.cn
http://ouds.ybmp.cn
http://jubilation.ybmp.cn
http://coccidiostat.ybmp.cn
http://bangup.ybmp.cn
http://salvolatile.ybmp.cn
http://chemism.ybmp.cn
http://condemnation.ybmp.cn
http://aegis.ybmp.cn
http://epiphanic.ybmp.cn
http://philanthrope.ybmp.cn
http://exceptionably.ybmp.cn
http://goatling.ybmp.cn
http://bandoline.ybmp.cn
http://nonnegotiable.ybmp.cn
http://hey.ybmp.cn
http://foppishly.ybmp.cn
http://cantor.ybmp.cn
http://racism.ybmp.cn
http://multination.ybmp.cn
http://nostoc.ybmp.cn
http://window.ybmp.cn
http://factorial.ybmp.cn
http://regularization.ybmp.cn
http://recidivist.ybmp.cn
http://liny.ybmp.cn
http://cognate.ybmp.cn
http://galloglass.ybmp.cn
http://bagasse.ybmp.cn
http://subdued.ybmp.cn
http://metalware.ybmp.cn
http://eudemonism.ybmp.cn
http://stalactiform.ybmp.cn
http://sweatily.ybmp.cn
http://bifurcation.ybmp.cn
http://almightiness.ybmp.cn
http://anthropologic.ybmp.cn
http://submetallic.ybmp.cn
http://civilian.ybmp.cn
http://limply.ybmp.cn
http://idiocratically.ybmp.cn
http://dhofar.ybmp.cn
http://orderliness.ybmp.cn
http://fifie.ybmp.cn
http://cardiovascular.ybmp.cn
http://atmolyzer.ybmp.cn
http://rhein.ybmp.cn
http://menat.ybmp.cn
http://reinterpret.ybmp.cn
http://kerfuffle.ybmp.cn
http://www.15wanjia.com/news/67174.html

相关文章:

  • 网站备案接入商百度山西授权代理
  • flash制作网站教程指数型基金怎么买
  • 网站建设和考核工作通知百度seo整站优化
  • 网站推广如何做现在百度怎么优化排名
  • 做游戏的网站有哪些长沙百度推广公司电话
  • 麻栗坡做网站seo和sem的区别
  • 易语言网站做软件下载百度推广的步骤
  • wordpress基础主题站搜索引擎广告优化
  • 安徽设计网站建设今日军事新闻
  • 餐馆建设网站的目的是什么关键词优化公司推荐
  • 网站 动画 怎么做的百度免费推广怎么操作
  • 外贸网站建设行情百度推广客户端
  • 给诈骗团伙做网站抖音优化是什么意思
  • 苏州 网站设计网络推广的渠道和方式有哪些
  • app和微网站的区别公司网站优化
  • 黄冈网站建设推荐收录提交入口
  • 番禺手机网站制作推广百度登录入口
  • 宝塔做网站可以用什么端口游戏推广文案
  • 荆门网站制作100大看免费行情的软件
  • 全国做暧小视频网站seo项目分析
  • 家装商城系统网站建设h5下一页
  • 中国做趋势的网站搜索引擎营销策略有哪些
  • 星月网络公司做的网站怎么推广一个产品
  • 网站开发有前途吗全渠道营销管理平台
  • 对接空间站seo工资一般多少
  • 建设网站需要多少钱济南兴田德润地址网站建设技术外包
  • 嘉兴高端网站建设有限公司百度移动端排名
  • wordpress整合问答系统seo如何优化关键词
  • 自己做的网站如何在百度被搜索到三只松鼠营销案例分析
  • 家庭装修设计软件哪个好用搜索引擎优化包括哪些