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

    1. const修饰指针的四种情况

    int b = 500;
    const int *a = &b;  // 情况1
    int const *a = &b;  // 情况2
    int* const a = &b;  // 情况3
    const int* const a = &b;  // 情况4

    (1)情况1

    const位于*号的左侧,则const用来修饰指针所指向的变量。

    const位于*号的右侧,则const用来修饰指针本身。

    那么,情况1中*a的值是常量。换句话说,如果a是仓库管理员,他所进入的仓库,里面的货物(*a)是他没有权限动的(不允许*a=600)。

    但是也有办法去改变*a的值,一种是通过改变b,另一种是使a指向别处(管理员换个仓库,如a++)。

    (2)同1。

    (3)指针本身是常量,就像a是仓库管理员,他只能进入指定的某个仓库,而不能去别的仓库(不能a++),但是里面的货物(*a)是可以随意动的(允许*a=600)。

    对于这种情况,定义同时必须初始化。

    (4)指针本身和指向的内容的不能动。

    2. C++类中的const用法

    我们定义的类的成员函数中,有一些函数要修改类数据成员的值,有一些函数不要修改类的数据成员。将不需要修改成员变量的函数加上const关键字可以提高程序的可读性、可靠性,在该成员函数中,一旦企图修改数据成员的值或调用另一个非const成员函数,编译器会报错。

    具体例子如下:

    class Point
    {
        int xVal, yVal;
        public:
        int GetY() const;
    };
    
    // 关键字const必须用同样的方式重复出现在函数实现中,否则编译器会把它看成一个不同的函数
    int Point::GetY() const
    {
        return yVal;
    }
    
    // 注意不能写成const int Point::GetY()

    如果把const放在函数声明前面,意味着函数的返回值是常量,

  • 相关阅读:
    Web大规模高并发请求和抢购的解决方案
    常用的排序算法
    Kafka中的消息是否会丢失和重复消费(转)
    excel操作之poi-ooxml
    spring-boot-configuration-processor 是干啥用的
    递归和尾递归的区别和原理(转)
    kafka接口文档和kafka教程
    quartz (从原理到应用)详解篇(转)
    Elastic-Job开发指南(转)
    SimpleDateFormat线程不安全及解决办法(转)
  • 原文地址:https://www.cnblogs.com/in4ight/p/8481275.html
Copyright © 2011-2022 走看看