C++的那些事:const用法面面观

发表于:2014-5-05 09:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:☆Ronny丶    来源:51Testing软件测试网采编

  一、const是什么
  在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。
  所以,const修饰符的作用主要是利用编译器帮助我们检查自己代码的正确性。我们使用const在源码中标示出“不应该改变”的地方,然后利用编译器,帮助我们检查这些地方是否真的没有被改变过。如果我们不小心去修改了这些地方,编译器就会报错,从而帮助我们纠正错误。使用const和不使用const,对于最终编译产生的代码并没有影响。
  虽然const对于最终代码没有影响,但是尽可能使用const,将帮助我们避免很多错误,提高程序正确率。
  二、const可以修饰哪些对象
  在上面已经提到过了,const是一种修饰符,那它可以作为哪些对象的修饰符呢?下面列举了一些C/C++中用到const的地方。
  1,const变量
  2,const指针
  3,const引用
  4,const类
  5,类的const成员变量
  6,类的const成员函数
  7,const修饰函数的形参与返回值
  下面我们分别讨论上面几种情况下,const的用法。
  三、const与变量
  当一个变量被const修饰后,具有以下几个特点:
  1)该变量只能读取不能修改。(编译器进行检查)
  2)定义时必须初始化。
  3)C++中喜欢用const来定义常量,取代原来C风格的预编译指令define。
  1 const int var; // Error:常量 变量"var"需要初始化设定项
  2 const int var1 = 42;
  3 var1 = 43; // Error:表达式必须是可以修改的左值
  上面代码中第一行和第三行都有错误,注释便是编译器给出的错误提示。
  另外注意,在使用const变量作为数组的下标时,变量的值一定要是一个常量表达式(在编译阶段就能计算得到结果)。
1 const int sz = 42;
2 int iAr[sz];
3 const int sz1 = size(); // size()必须是一个返回常量的函数
4 int iAr1[sz1];
5
6 int var = 42;
7 const int sz2 = var;
8 int iAr2[sz2]; // error:sz2只有运行时才知道值
41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号