本文引自http://www.cnblogs.com/lichkingct/archive/2009/04/21/1440848.html ,略有增删

const关键字在c++中用法有很多,总结如下:

  1. 修饰变量和指针:
    • 修饰变量时把变量转换为常量,定以后不能修改,定义时就要初始化。含义是const修饰的变量varName时只读的,不可改变。格式如下:
      TYPE const varName=value;
      const TYPE varName=value;(推荐写法)
      试图定义一个非const对象的指针指向一个常量对象将会导致编译错误.

      const double minWage= 9.60;
      double *ptr=&minWage //引起编译错误

      const double *ptr=&minWage //编译正确

    • 修饰指针时,const在不同的位置含义不同,记忆的方法:const在*前则可认为const修饰的是解指针的值,即内容不可变,const在*后则可认为const修饰的是指针,即指向的地址不可变
      const char* ptr="abc"; //*ptr不可变,ptr可变,即指针指向的内容不可变,而指针可以指向其他位置
      char const *ptr="abc";//同上 char *const ptr="abc" //ptr不可变,*ptr可变,即指针指向的地址不能变,地址中存放的数据可以边
      const char* const ptr="abc"//两者都不可变
  2. const修饰函数参数:表示函数体中不能修改参数的值
  3. const修饰类对象/对象指针/对象引用:表示对象,对象指针和对象引用中的任何成员都不能被改变,且只能调用const成员函数。const修饰类成员变量:表示成员常量,它只能在初始化列表中赋值
  4. class Base
    {
    ...const int value; ....A(intx):value(x){}//在成员初始化列表中初始化const常量
    };
  5. const修饰类成员函数:该成员函数不能修改类中任何成员变量,且只能调用const成员函数
    class Base
    {
    void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数 }
  6. const常量与defin宏定义的区别
    • 编译器处理方式不同:
      • define宏在预处理阶段展开
      • const常量在编译运行阶段使用
    • 类型和安全检查不同
      • define宏没有类型,不做任何类型检查,仅仅展开
      • const常量具有具体的类型,在编译价额段执行类型检查
    • 存储方式不同
      • define宏仅仅是展开,在哪个地方使用就在哪个地方展开
      • const常量在内存中分配

C++之const关键字的更多相关文章

  1. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  2. C++中const关键字的使用总结

    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...

  3. final关键字+const关键字

    final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...

  4. C++学习11 类和new、delete操作符 类与const关键字

    如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...

  5. C++中的const关键字

    http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...

  6. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  7. C语言之头文件,static与const关键字

    [前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...

  8. static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

  9. const关键字详解

    const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500; ...

  10. C++ const关键字用法详解

    1const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 事实上这个概念谁都有只是三种声明方式非常相似很容易记混. Bjarne在他的T ...

随机推荐

  1. Core Bluetooth的基本常识

    每个蓝牙4.0设备都是通过服务(Service)和特征(Characteristic)来展示自己的 一个设备必然包含一个或多个服务,每个服务下面又包含若干个特征 特征是与外界交互的最小单位 比如说,一 ...

  2. Ubuntu14.04下初步使用MongoDB

    不多说,直接上干货! Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐) shell命令模式 输入mongo进入shell命令模式,默认连接的数 ...

  3. synchronized同步机制,修饰类和修饰对象的区别

    synchronized用法 synchronized修饰的对象有几种: 修饰一个类:其作用的范围是synchronized后面括号括起来的部分,作用的对象是这个类的所有对象: 修饰一个方法:被修饰的 ...

  4. 基于Doxygen的C/C++注释原则

    基于Doxygen的C/C++注释原则 标注总述 .文件头标注 . 命名空间标注 . 类.结构.枚举标注 . 函数注释原则 . 变量注释 . 模块标注 . 分组标注 总述 华丽的分隔线 //----- ...

  5. UVa 424 Integer Inquiry 【大数相加】

    解题思路:因为给定的数据是多组,所以我们只需要多次做加法就可以了,将上一次的和又作为下一次加法运算的一个加数. 反思:还是题意理解不够清楚,最开始以为只是算三个大数相加,后来才发现是多个,然后注意到当 ...

  6. Spring Boot 20170913

    SpringBoot 是做微服务的,比如只用来发邮件,只用来上载文件等等.优点是开发极其简单,约定大于俗成,缺点是不适合小型项目.通常用来分解大型项目,做成多个微服务. 参考: http://www. ...

  7. 1.Vector(同步)和ArrayList(异步)异同

    Vector线程同步,线程安全   ArrayList的运行速度较快,因为没有使用线程 请求方式:同步   异步未响应=假死 原因:1.占用内存过多,内存无法进行处理  2.并发量(本机的浏览器进行访 ...

  8. Jquery复习总结

    1.选择器: $(".class") $("#id") $("div") $("a p") $(div:first).c ...

  9. [NOIP补坑计划]NOIP2015 题解&做题心得

    感觉从15年开始noip就变难了?(虽然自己都做出来了……) 场上预计得分:100+100+60~100+100+100+100=560~600(省一分数线365) 题解: D1T1 神奇的幻方 题面 ...

  10. js 获取对象长度

    获取对象的程度,可以这样获取: var myObj = {a:1,b:2,c:3} var arr = Object.keys(myObj);var len = arr.length  console ...