zoukankan      html  css  js  c++  java
  • const类型总结

    const 表示常类型
     
    作用:
    1、具有不可变性。
     
    2、可以很方便对参数进行调整和修改,和宏定义一样,不变则已,变都变。
     
    3、保护被修饰的东西,防止被意外修改。(如:在修饰函数的形参时,加const可以保证参数的值不被改变)
     
    4、为函数重载提供参考。
     
    5、节省空间,避免不必要的内存分配。(如:宏定义是立即数,会分配多次内存,因此有多个复制;const在内存只有一份复制)
     
    6、提高程序效率,编译器通常不为普通的const常量分配内存,而是存在符号表中,就没有存储和读内存的操作。
     
    使用场景:(以int为例)
    1、修饰一般常量,此时const可以在int前或者int后。
     
    2、修饰常数组,此时const可以在int前或者int后。
    const int a[] = {1,2};
    int const  a[ ] = {1,2};
     
    3、修饰常对象,此时const可以在class前或者class 后。
     
    4、修饰常指针。
    const int *a; // 修饰指向的对象,a可以变,a指向的内容不能变
    int const
    *a; // 修饰指向的对象,a可以变,a指向的内容不能变
    int *const a; // 修饰a指针,a不可变,a指向的对象可变
    const int *const a; // a及其指向的对象都不能变
     
    5、修饰常引用。
    const int &s;
    6、修饰函数的常参数。
    void fun(int const a){}
     
    7、修饰类的成员函数。
     
    8、修饰函数的返回值。
     
     
    常引用:
    目的:避免在毫不知情的情况下改变了变量的值。
     
    引用的初始化:
    1、是左值(左值就是可以放在等号左边的值,是一个地址),可以。
    2、不是左值,只能对常引用赋值,而且赋值的过程是:将值隐式转换到类型T,放在一个临时变量中,再将这个临时变量来初始化这个常引用。
     
    double & dr = 1; // 错,非常引用只能用左值来初始化
    const double & dr = 1;  // 对,相当于double temp = double(1);  const double & dr = temp;
     
    因为临时变量是const 类型,第一个表达式相当于将试图将一个const类型转化为非const类型,所以错了。
    总之,引用型参数能被定义为const就定义为const。
     
    个人博客地址:https://huahua462.github.io/
  • 相关阅读:
    JAVA与.NET的相互调用——通过Web服务实现相互调用
    WCF大数据量传输配置
    WCF大数据量传输解决方案
    C# #if DEBUG
    我对CSS vertical-align的一些理解与认识(一)
    htmlparser使用例子(全) 转载
    【HtmlParser】HtmlParser使用
    HTMLParser 使用详解
    htmlparser源码简单分析
    利用OpenXml生成Word2007文档
  • 原文地址:https://www.cnblogs.com/huahua12/p/8503033.html
Copyright © 2011-2022 走看看