zoukankan      html  css  js  c++  java
  • c++ 常量成员函数

      结合个人的读书理解,做下常量成员函数的笔记。

      常量成员函数的形式很简单,就是函数的声明定义后跟上一个const,如

    class Test {
    public:
        int getData() const;
    private:
        int data;
    
    };
    
    int Test::getData() const {
        return data;
    }

      int getData() const;就是一个常量成员函数了。

      为什么加上一个const就把成员函数变为常量成员函数呢?const关键字到底做了什么?

      按照《c++ primer》上的说法, const的作用是修改隐式this指针的类型。

      对于this指针,百度百科上有如此的描述,"this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。"因为this指针是隐式的,所以我们不能显式地把它定义为const类型,如以下代码是非法的。

    int Test::getData(const int* const this) {
        return data;
    }

      对此,c++允许的做法是把const关键字放在成员函数的参数列表之后,以此来改变this指针的类型。

      因为传进去的隐式this指针是指向常量的,常量成员函数不能改变调用它的对象的内容,因此常量成员函数多用于读取数据成员。

      常量对象,以及常量对象的引用或指针都只能调用常量成员函数,若成员函数能够改变常量对象,那么常量对象就不是常量了。

  • 相关阅读:
    IDEA tomcat热部署方法及乱码问题解决
    访问WEB-INF下JSP资源的几种方式(转)
    SpringMVC 静态资源处理
    SpringMVC中的拦截器
    SpringMVC中的异常处理
    SpringMVC实现文件上传
    IDEA 热部署
    响应数据和结果视图
    SpringMVC中的常用注解
    js获取当前根目录的方法
  • 原文地址:https://www.cnblogs.com/IamTing/p/4876274.html
Copyright © 2011-2022 走看看