• const的使用


    const修饰的成员变量

    #include <iostream>
    using namespace std;
    
    int main()
    {    
      int x=1;
      const int y=x; //const data
      x=3;    //accept
      //y=3;    read-only variable 'y'
      cout<<"x=:"<<x<<" "<<"y=:"<<y<<endl; //x=3,y=1
    
      int k=0;
      int *p1=&x;    //non-const data,non-const pointer
      const int *p2=&x; //const data,non-const pointer
      int const *p2_1=&x; //const data,non-const pointer
      *p1=6;    //accept
      //*p2=3; read-only location '*p2'
      //*p2_1=3;    read-only location '*p2_1'
      //p2=&k;    //accept
      //p2_1=&k;    //accept
      cout<<"*p1=:"<<*p1<<" "<<"*p2=:"<<*p2<<" "<<"x=:"<<x<<endl; //*p1==6,*p2==6,x==6
      //Important
      //Because p1 points to the address of x,the value *p1 will change to p2 and x 
      
      int z=0;
      int *const p3=&x; //non-const data,const pointer
      //p3=&z;    read-only variable 'p3',The values of p3 is address
      *p3=z;    //accept 
      cout<<"*p3=:"<<*p3<<endl; 
    
      int const *const p4=&x; //const data,const pointer
      const int *const p5=&x; //const data,const pointer
      cout<<"*p4=:"<<*p4<<"    *p5=:"<<*p5<<endl;
      return 0;
    }

    const修饰指针时:

    1. 只有一个const,如果const位于*左侧,表示指针所指数据是常量,叫做:指向常量的指针变量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
    2. 只有一个const,如果const位于*右侧,表示指针本身是常量,叫做:指向变量的指针常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。
    3. 两个const,*左右各一个,叫做:指向常量的指针常量,表示指针和指针所指数据都不能修改。

    const修饰函数参数

    1. 此参数在函数体内不可改变

    const修饰的成员函数

    1. const修饰的成员函数不能改变任何成员变量的值(mutable修饰的成员变量除外)
    2. const修饰的成员函数不能调用任何非const成员函数(因为非const成员函数可能改变成员变量的值,而const成员函数能不改变成员变量的值,两者冲突)

    const修饰的变量:

    1. 具有常量属性,不能被修改,但是仍然不能放在数组中

    const修饰的引用:

    1. 为常引用,不能通过引用修改该值

    const修饰的对象:

    1. 为常对象,所有对象的成员变量不可改,不可调用非const函数
  • 相关阅读:
    设计模式复习-简单工厂模式
    神经网络与机器学习 笔记—基本知识点(上)
    声明:songzijian这个域名已经被抢注。大家别上了。不是我了。
    《NO STRATEGY》《重塑战略》
    《THE LEAN STARTUP》 《精益创业》
    逆向与分析-WebBrowserPassView消息分析
    HTTP1.0,1.1,2.0,HTTPS
    Linux-鸟菜-7-Linux文件系统-EXT
    Linux-鸟菜-6-文件搜索
    反弹代理环境的搭建
  • 原文地址:https://www.cnblogs.com/tianzeng/p/9063438.html
Copyright © 2020-2023  润新知