const 定义的对象为一个常量不能被改动。

这个想必大家都知道。

这里仅仅是介绍const对象默觉得文件的局部变量

        当一个非const变量在一个c或cpp文件里为全局时,它在整个程序中都能够訪问。我们在其它的c或cpp文件要用到这个变量。仅仅须要在文件做合适的声明就能使用。

比如:

main.cpp 中全局变量bufsize

#include <iostream>

using namespace std;



extern void function();

int bufsize = 100;



int main()

{

    function();

    return 0;

}

function.cpp中声明了bufsize

#include <iostream>

using namespace std;



extern int bufsize;



void function()

{

    cout<<"function.cpp***bufsize----------"<<bufsize<<endl;

}

编译执行:

g++ -o main main.cpp function.cpp

./main

function.cpp***bufsize----------100       function.cpp能訪问到main.cpp中bufsize

如今我们将bufsize设置成const对象

main.cpp

#include <iostream>

using namespace std;



extern void function();

const int bufsize = 100;



int main()

{

    function();

    return 0;

}

function.cpp内容不变

编译执行:

g++ -o main main.cpp function.cpp

/tmp/ccdvo28n.o: In function `function()':

function.cpp:(.text+0xb): undefined reference to `bufsize'

collect2: ld returned 1 exit status

function.cpp中bufsize未定义

稍作改进:

main.cpp

#include <iostream>

using namespace std;



extern void function();

extern const int bufsize = 100;



int main()

{

    function();

    return 0;

}

function.cpp不变

编译执行:

g++ -o main main.cpp function.cpp

./main

function.cpp***bufsize----------100

执行正常

总结:

定义的非const全局变量。它属于整个程序,其它程序要訪问仅仅要对应的声明就可以。

定义的const全局变量,属于定义的文件,假设想要整个程序都能訪问,则要指定const变量为extern。

const对象默觉得文件的局部变量的更多相关文章

  1. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  2. const对象默认是static的,而不是extern的

    const 和 static 变量,可以放在头文件中 const对象默认是static的,而不是extern的,所以即使放在头文件中声明和定义.多个cpp引用同一个头文件,互相也没有感知,所以不会导致 ...

  3. (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍

    1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1  {快2 }  }每个大括号表示一个独立的块 ...

  4. Hibernate 对象关系映射文件

    简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...

  5. 文件对象FSO应用 文件对象FSO应用

    FileSystemObject对象被用来访问服务器上的文件系统.这个对象能够处理文件.文件夹和目录路径.用它来检索文件系统信息也是可能的. 下面的代码创建了一个文本文件,并写入了一些文本: dim ...

  6. Python之code对象与pyc文件(三)

    上一节:Python之code对象与pyc文件(二) 向pyc写入字符串 在了解Python如何将字符串写入到pyc文件的机制之前,我们先来了解一下结构体WFILE: marshal.c typede ...

  7. Python之code对象与pyc文件(一)

    Python程序的执行过程 我们都知道,C语言在执行之前需要将源代码编译成可执行的二进制文件,也就是将源代码翻译成机器代码,这种二进制文件一旦生成,即可用于执行.但是,Python是否一样呢?或许很多 ...

  8. 通过jQuery Ajax使用FormData对象上传文件

    FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...

  9. hibernate(四)__由表逆向创建Domain对象和对象关系映射文件

    之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...

随机推荐

  1. sunstudio 12.3 on solaris 10

    #include <stdio.h> #include <stdlib.h> #define RPT 10000000 int main() { int i=1; for( i ...

  2. 用最简单的例子理解单例模式(Singleton Pattern)

    当从应用程序全局的角度来看,如果只允许类的一个实例产生,就可以考虑单例模式. □ 即时加载的单例模式 把类的实例赋值给类的一个静态字段. class Program { static void Mai ...

  3. 【BZOJ】【3771】Triple

    生成函数+FFT Orz PoPoQQQ 这个题要算组合的方案,而且范围特别大……所以我们可以利用生成函数来算 生成函数是一个形式幂级数,普通生成函数可以拿来算多重集组合……好吧我承认以上是在瞎扯→_ ...

  4. 【架构】SpringCloud JHipster -微服务相关资料

    SpringCloud-微服务相关资料 基于Spring Boot和Spring Cloud实现微服务架构学习(四)-Spring Cloud总结 - zeb_perfect的专栏 - 博客频道 - ...

  5. 常见MIME类型

    Response对象通过设置ContentType使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据.  MIME类型格式:类别/子类别;参数 Co ...

  6. Cognos中新建SQLserver数据源的步骤

    1:配置-数据源连接-新建数据源-指定数据源名称 2:选择数据库类型,暂时不配置jdbc 3:指定服务器,数据库名称,登陆用户名和密码 4:测试 5:测试OK(OLE DB类型的) 6:返回上一步 , ...

  7. C++类型转换的经典例子

  8. M2Mqtt is a MQTT client available for all .Net platform

    Introduction M2Mqtt is a MQTT client available for all .Net platform (.Net Framework, .Net Compact F ...

  9. Vector 多字段排序的Java实现

    要求实现: Vector 多字段排序,其中首元素不参与排序,第一二三字段升序,空排到前面. //这里是Vector的元素定义 public class AVectorElement { private ...

  10. C#.NET常见问题(FAQ)-找不到类型或命名空间名称“ManagementBaseObject”怎么办

    如下图所示,虽然添加了using System.Management,还是报错   System.Management似乎跟普通的命名空间不太一样,这个项目还需要添加.右击这个项目的csproj文件, ...