zoukankan      html  css  js  c++  java
  • C++之const关键字

    本文引自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常量在内存中分配
  • 相关阅读:
    XMLHTTP使用具体解释
    C++之EOF()
    具体解释VB中连接access数据库的几种方法
    Android中部署自己的su
    hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】
    【C/C++多线程编程之九】pthread读写锁
    数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
    百度开发人员面试题(优化)
    为Windows 7的winsxs目录瘦身,谨慎。
    sonix uvc驱动的加入 RT5350支持H264
  • 原文地址:https://www.cnblogs.com/phenixyu/p/4245009.html
Copyright © 2011-2022 走看看