CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    const的使用

    OpenFOAM
    3
    4
    419
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小
      小考拉 最后由 编辑

      最近看到了一点OF关于 函数声明的代码 ,对于const的使用存在疑惑:

      inline scalar k() const { return k_; }
      
      inline const vectorField& Smom() const { return Smom_; }
      

      为什么第一行代码应用了一个const,第二行代码用了两个const呢?

      第二行代码中的两个const分别表示什么意思呢?

      麻烦老师们能够指点一下:chitang:

      T 1 条回复 最后回复 回复 引用
      • T
        Turbulence @小考拉 最后由 编辑

        @小考拉 @小考拉 你好,我最近也遇到这个问题,我理解后面加是指常函数,第二行是常量指针,指针常量,就是不可改吧,不知道这样理解对不对,有不对请指教。 :chouchou:

        1 条回复 最后回复 回复 引用
        • W
          wangfei9088 最后由 编辑

          对应两个问题的回答。

          1. 第二行代码多了一个const修饰返回值。第一行代码返回的是scalar类型的数据(是个值),第二行代码返回的是vectorField类型的对象的引用,这是两者的区别。为什么要在返回对象的引用前加const?这是为了提高效率,加了const,在返回对象的引用(不是副本)时,不用调用构造函数创建对象。
          2. 通俗地讲,在函数后面加const修饰,表示程序员不允许该函数改变对象的数据,这也是这两行代码函数后面都加const的原因。
          1 条回复 最后回复 回复 引用
          • 小
            小考拉 最后由 编辑

            感谢二位前辈的回复,我差不多理解这个意思了:xinxin:

            1 条回复 最后回复 回复 引用
            • First post
              Last post