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

广州仿站定制模板建站欧亚专线快递查询单号查询

广州仿站定制模板建站,欧亚专线快递查询单号查询,百度快照收录,h5响应式集团网站推荐1.外部变量 如果一个变量除了在定义它的源文件中可以使用外,还能被其他文件使用,那么就称这个变量为外部变量。命名空间作用域中定义的变量,默认情况下都是外部变量,但在其他文件中如果需要使用这一变量,需要用extern…

1.外部变量

如果一个变量除了在定义它的源文件中可以使用外,还能被其他文件使用,那么就称这个变量为外部变量。命名空间作用域中定义的变量,默认情况下都是外部变量,但在其他文件中如果需要使用这一变量,需要用extern关键字加以声明。请看下面的例子:
源文件1如下:

int i = 3;//定义变量i

源文件2如下:

extern int i;//声明一个在其他文件中的定义的外部变量iint main()
{i++;cout << i << endl;return 0;
}

运行结果:
在这里插入图片描述
结果分析:
上述程序中,虽然i定义在源文件1中,但由于源文件2中用extern关键字声明了变量i,因此在源文件2中同样可以使用它。外部变量是可以为多个源文件所共享的全局变量。

对外部变量的声明可以是定义性声明,即在声明的同时定义(分配内存,初始化),也可以是引用性声明(引用在别处定义的变量)。在命名空间作用域中,不用extern关键字声明的变量,都是定义性声明;用extern关键字声明的变量,如果同时指定了初值,则是定义性声明,否则是引用性声明。

例如上述源文件1中声明变量的同时也是对i的定义,源文件2中对i的声明只是引用性声明。外部变量可以有多处声明,但对变量的定义性声明只能是唯一的。

2.外部函数

在所有类之外声明的函数(也就是非常成员函数),都具有命名空间作用域的,如果没有特殊说明,这样的函数都可以在不同的编译单元中被调用,只要在调用之前进行引用性声明(即声明函数原型)即可。当然也可以在声明函数原型或定义函数时用extern修饰,其效果与不加修饰的默认状态是一样的。

【注意】通常情况下,变量和函数的定义都放在源文件中,而对外部变量和外部函数的引用性声明放在头文件中。

【例】:
头文件:

#pragma once
extern int i;
extern void next();

源文件

int i = 3;void other()
{i++;
}
void next()
{i++;other();
}int main()
{i++;next();cout << i << endl;return 0;
}

运行结果:
在这里插入图片描述

3.将变量和函数限制在编译单元内

命名空间作用域中声明的变量和函数,在默认情况下都可以被其他编译单元访问,但有时并不希望一个源文件中定义的命名空间作用域的变量和函数被其他源文件引用。这种需求主要出于两个原因,一是出于安全性考虑,不希望将一个只会在文件内使用的内部变量或函数暴露给其他编译单元,就像不希望暴露一个私有成员一样;二是对于大工程来说,不同文件之中的、只在文件内使用的变量名很容易重名,如果将它们都暴露出来,在连接时很容易发生名字冲突。

对于这一问题,之前的解决办法是在定义这些变量和函数时用static关键字。static关键字用来修饰命名空间作用域的变量和函数时,和extern关键字起相反的作用,static关键字会使得被static修饰的变量和函数无法被其他编译单元引用。

【注意】static的3中用法,当它在局部作用域、类作用域和命名空间作用域时,具有不尽相同的作用。一个共同点是,凡是被static关键字修饰的变量,不管它们在未使用static关键字时它们的生存期如何,在被static关键字修饰之后都有静态生存期。

在IOS C++ 2.0标准中宣布不在鼓励用static关键字解决不把变量和函数暴露给其他编译单元这一问题。取而代之的是使用匿名的命名空间。在匿名命名空间中定义变量和函数,都不会暴露给其他编译单元。例:

namespace //匿名命名空间
{int i;void f(){i++;}
}

【注意】应当不希望被其编译单元引用的变量和函数放在匿名命名空间中

http://www.yayakq.cn/news/115415/

相关文章:

  • 网站建设除了凡科还有哪些做服装哪个网站图片多
  • app 门户网站做爰全过程免费网站的视频教程
  • 凡科建站教程河北建筑工程学院招生网
  • 企业网站在策划阶段最重要的工作是什么有什么好用的搜索引擎
  • 济南网站建设-中国互联企业网站建设公司有哪些
  • 公司网站如何做分录做搜狗网站点击
  • 网站建设的开发语言wordpress瀏覽器圖標
  • wordpress视频存储seo的工具有哪些
  • 龙岗区网站制作公司企业邮箱怎么查询
  • 为什么上不了建设银行个人网站苏州比较好的建筑公司
  • 商务网站建设综合实训报告做公司网站的好处
  • 网站建设的维护与更新个人个性网页界面设计
  • arial 网站开发是用犀利浙江网站建设情况
  • 网站建设及管理制度注册公司经营范围怎么选择
  • 网站404是什么意思烟台seo网站推广
  • 东莞拓步网站建设做企业网站域名需要解析吗
  • 手机访问不了自己做的网站吗制作软件网站
  • 手机微信登入网站资源seo网站优化排名
  • 福州阿里巴巴网站建设自己做网站需要几个软件
  • 网站不备案备案ghost系统怎么卸载wordpress
  • 西安住房建设局网站首页怎么网站建设
  • 报纸网站建设网站开发私活分成
  • 优秀的网页网站设计合肥网站建设=388元
  • 网站备案注销怎么恢复一般网站建设费用预算
  • 广州专业做网站的科技公司柳州网站建设公
  • 广告行业做网站哪个好深圳做网站
  • 广东网站设计哪家专业wordpress 数据库配置
  • 网站源码查看成都网页设计公司推荐
  • 商业网站模板下载全中文网站开发
  • 网站被攻击会影响收录么网页与网站的区别