• const对象分析


      const定义一个常量,常量定义以后就不能被修改。

     1 class A {
    2 public:
    3 int a;
    4 int * b;
    5 int &c;
    6 A(): a(1), b(new int(1)), c(*new int(1)) {}
    7 };
    8
    9
    10 int _tmain(int argc, _TCHAR* argv[])
    11 {
    12 //std::cout << sizeof(A);
    13 const A a_obj;

    14 //a.a = 1;
    15 //a.b = new int(2);
    16 a_obj.c = 2;

    17
    18 *a_obj.b = 2;
    19 std::cout << a_obj.c << *a_obj.b;
    20 return 0;
    21 }

      看这份代码,当创建一个const A对象时,A对象范围内的任意一个字节都不可以修改,也就是说,任何内嵌对象(不是通过new出来的)的值都不可以修改,如果在A对象中放的不是内嵌对象那就是放对象的指针,那么对象的指针属于A的一部分,而指针指向的地址的对象和A无关,所以虽然不可以修改地址但可以修改地址指向对象的值。

    int a的值内嵌在对象内部其值不可以改,int *b对象的指针在也内嵌在A对象内部,int &c同理;可以修改int b和int c对象的值。

       综上:只要确信修改的值,没内嵌在声明为const的对象中,那么改值就可以修改。扩大范围(不局限于const对象),被修饰为const的的那块内存区域,中的任一位都不可以被修改。

    write by fgd

  • 相关阅读:
    暴力字符串hash——cf1200E
    单调栈+线段树——cf1220F
    拆边+BFS队列骚操作——cf1209F
    控制器
    linux下安装配置jmeter
    docker-compose.yml配置jforum开源系统
    anyproxy
    docker搭建一键安装包lnmp
    docker tomcat,mysql 搭建开源项目jforum
    接口自动化测试-Mock Get和Post请求
  • 原文地址:https://www.cnblogs.com/wendao/p/cpp_const_analysis.html
Copyright © 2020-2023  润新知