C++里面的const是怎么实现的?

转载 2016年08月29日 21:32:53

Const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。

现在它的形式变成了:

Const DataType VariableName = VariableValue ;为什么const能很好地取代预定义语句?const 到底有什么大神通,使它可以振臂一挥取代预定义语句呢?

1. 首先,以const 修饰的常量值,具有不可变性,这是它能取代预定义语句的基础。

2. 第二,很明显,它也同样可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。

3. 第三,C++的编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高,同时,这也是它取代预定义语句的重要基础。

这里,我要提一下,为什么说这一点是也是它能取代预定义语句的基础,这是因为,编译器不会去读存储的内容,如果编译器为const分配了存储空间,它就不能够成为一个编译期间的常量了。

4. 最后,const定义也像一个普通的变量定义一样,它会由编译器对它进行类型的检测,消除了预定义语句的隐患。

从4行代码看右值引用

概述   右值引用的概念有些读者可能会感到陌生,其实他和C++98/03中的左值引用有些类似,例如,c++98/03中的左值引用是这样的: int i = 0; int& j = i; ...

a,b比较和交换问题

1、两个变量a和b,不用“if”、“?:”、“swtich”或其他判断语句,找出两个数中间比较大的。 方案1: int max = ((a+b)+abs(a-b))/2 方案2:...

const 在C/C++里面的用途

11.1 使用const提高函数的健壮性 看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。c...

c/c++ 里面的变长参数的实现

 c里面的变长参数,c++里面也有。提供了:一个类型  va_list3个宏  va_start  va_arg  va_end使用的例子是这样的int foo(char* fmt, ...){   ...

c/c++ 里面的变长参数的实现

  c里面的变长参数,c++里面也有。提供了:一个类型  va_list3个宏  va_start  va_arg  va_end使用还是很方便的,但是实现是怎么样的呢?...

C++求连续数列之和为S的数组里面所有组合(根据公式S=(x+y)*n/2优美实现)

//博主mingliang37的思想,我后来想明白了,整理了一下. #include using namespace std; //输出所有和为S的连续整正数序列. //x.......y(这是一...

init.rc文件里面启动c++程序,通过jni调用java实现

init.rc文件里面启动c++程序,通过jni调用java实现

C++中const的实现机制深入分析

C++中const的实现机制深入分析 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢?本文将对这两个问题进行一些分析,需要了解的朋友可以参考...
  • ggemini
  • ggemini
  • 2014年09月20日 09:15
  • 210

c/c++const实现原理解析

抛出问题 下列代码输出的结果是什么?#include #include using namespace std; int main() {/*在c++下*/ const int a = 10...
  • gjggj
  • gjggj
  • 2017年03月19日 09:30
  • 351
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++里面的const是怎么实现的?
举报原因:
原因补充:

(最多只允许输入30个字)