C++高级进阶 第四季:const详解(二) 常量折叠

  • 时间:
  • 浏览:2
  • 来源:大发5分6合APP下载_大发5分6合APP官网

当然想绝对不为任何const分配存储是不机会的,尤其是繁复的社会形态。统统 const的定义还要默认内部连接,即连接仅在特定的编译单元内;或多或少,机会众多的const在多个cpp文件分配内存,引起连接错误。

[2] http://blog.csdn.net/bestrivenfan/article/details/1009511009

[1] c++编程思想

const详解之二

或多或少在c中仅仅在那我文件中定义(不需要extern修饰),那我文件也是合法的。c中const是必需分配内存的,而c++实际上一开始了了是不需要分配内存的,或多或少居于字符表中。

连接守护守护进程在多个对象文件都看统一的定义就会“抱怨”。然而,机会const默认内部连接,统统 连接守护守护进程不需要跨过编译单元连接哪十有几个 定义,或多或少不需要有冲突。

const 优于 #define:

(1) #define沒有类型检查,const在编译期(而都是 预编译期)做类型检查;

通常状况下,当extern都是 定义的一每项时,不需要分配存储空间。机会使用const,沒有编译都是进行常量折叠。

(3)定义十有几个 const时,还要赋十有几个 值给它,除非用extern做说明:extern const int bufsize;

(2)const方便调试和定位bug。

机会extern因为使用内部连接(定义时使用extern),或多或少还要分配存储空间,这也或多或少说有十有几个 不同的编译单元应当并能引用它,统统 还要有存储空间。

机会extern都是 定义的一每项,统统 我其他人认为这或多或少会分配空间。

(2)C++中的const默认为内部连接(internal linkage),也或多或少说 const 仅在被定义过的文件里才可见,而在连接时能并能 被或多或少编译单元都看。

统统 应该完正用const代替#define

通常C++编译器不需要为const创建存储空间,相反它把你这个 定义保居于它的符号表里,但extern强制进行了存储空间分配,取const地址也会**,这也解释了const详解(一)中能并能修改const空间,或多或少cout原值大概还是去符号表中找。

(1)要使用const代替#define,同样还要把const定义倒进头文件(或或多或少格式文件,include即可)。那我通过富含头文件,可把const定义单独倒进十有几个 地方并把它分配给十有几个 编程单元。

const最初动机或多或少代替 #define。

那同文件extern呢