详解C/C++中const关键字的用法及其与宏常量的比较分享

编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高

(4)可以保护被它修饰的东西

防止意外的修改,增强程序的健壮性。

  void f(const int i) { i=10;//error! } //如果在函数体内修改了i,编译器就会报错 

(5)为函数重载提供了一个参考

   class A   {     ......   void f(int i)  {......} //一个函数   void f(int i) const {......} //上一个函数的重载     ......   };

(6)定义域不同

   void f1 ()   {    #define N 12    const int n 12;   }   void f2 ()   {    cout<<N <<endl; //正确,N已经定义过,不受定义域限制    cout<<n <<endl; //错误,n定义域只在f1函数中。若想在f2中使用需定义为全局的   }

(7)做函数参数

   宏定义不能作为参数传递给函数;const常量可以在函数的参数列表中出现。

9.const_cast

const_cast运算符用来修改类型的const或volatile属性。

(1)常量指针被转化成非常量的指针,并且仍然指向原来的对象;

(2)常量引用被转换成非常量的引用,并且仍然指向原来的对象。

   void func()   {    const int a = 10;    int* p = const_cast<int*> (&a);    *p = 20;    std::cout<<*p; // 20    std::cout<<a;  // 10   }

注:C++中使用const 常量而不使用宏常量,即const 常量完全取代宏常量。

以上所述是小编给大家介绍的C/C++中const关键字的用法及其与宏常量的比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对<计算机技术网(www.ctvol.com)!!>网站的支持!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/488321.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐