zoukankan      html  css  js  c++  java
  • const 应用概述 [C++Primer]

    1.const 定义一个常量,常量在定义之后就不可以在修改,任何修改的尝试都会引起编译错误,所以在定义的时候必须初始化。

       const  int  nTemp = 9;

    2.在全局作用域声明的const变量是定义该对象的文件的局部变量,只存在于那个文件中,不能被其他文件访问;

       通过指定const变量为extern,就可以在整个程序中访问const对象。

       file_1.cc

       extern  const  int  bufsize = 10;

       file_2.cc

       extern  const  int  bufsize;

       for(int index = 0; index <= bufsize; index++);

     3.非const变量默认为extern。

     4.const引用,指向const对象的引用;

        为了阻止const对象被修改,将普通的引用绑定到const对象是不合法的;

        const   int i = 42;int &r = i;不合法的。

    5.const引用可以初始化为不同类型的对象或者右值,如:int i = 42; const int &r = 42;const int &r2 = 42 + i;

    6.const用在成员函数的形参表之后,可以将成员函数声明为常量,const必须出现在声明和定义中,否则会出现编译错误;

        double avg_price()const;

     7.const重载

         成员函数是否为const,也可以形成重载。

          对于函数值传递的情况,因为参数传递是通过复制实参创建一个临时变量传递进函数的,函数内只能改变临时变量,但无法改变实参。则这个时候无论加不加const对实参不会产生任何影响。但是在引用或指针传递函数调用中,因为传进去的是一个引用或指针,这样函数内部可以改变引用或指针所指向的变量,这时const 才是实实在在地保护了实参所指向的变量。因为在编译阶段编译器对调用函数的选择是根据实参进行的,所以,只有引用传递和指针传递可以用是否加const来重载。

    8. const成员函数可以改变mutable成员   

     1 class  Screen{
     2 public :
     3    do_display(std::ostream& os) const;
     4 private:
     5     mutable size_t    access_ctr;
     6 //
     7 };
     8 Screen ::do_display(std::ostream& os) const
     9 {
    10    size_t++;
    11     access_ctr++;
    12 }
  • 相关阅读:
    [zz]Mesos的分析4 支持Hadoop任务级调度
    代理设计模式
    spring初始化
    SpringAOP的切点的声明格式
    SpringAOP的介绍
    SpringIOC创建对象的单例和多例模式
    动态代理
    SpringIOC的自动注入
    SpringAOP的注解方式实现
    cglib动态代理实现流程
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/2995121.html
Copyright © 2011-2022 走看看