none
const关键字在函数声明中的含义 RRS feed

  • 问题

  • 我在类里面定义了这样的一个函数
       int comPare(CBox* xbox) const
       {
        return this->Volume() > xbox->Volume();
       }
    注意看清楚函数头后面有一个const 为什么我把const放在函数头的前面就会出现这个错误?错误 1 error C2662: “CBox::comPare”: 不能将“this”指针从“const CBox”转换为“CBox &” 

    如果是普通的函数的话放在前面就没这样的错 哈哈  如果在普通函数头后面加const的话 就提示跟这个一样的错误了!!!

    SplendourG 把细节的东西讲讲吧!!谢谢了

    法拉利 法拉利 法拉利
    2009年6月30日 12:59

答案

全部回复

  • 简单的来说,成员函数后面跟const表示在该函数里面不能修改该类的成员,而且只能调用其他末尾同样跟了const的成员函数,这时this的类型为const CBox *
    2009年6月30日 15:07
  • 放在后面表示函数是只读函数
    放在前面是返回一个只读类型的对象

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月30日 16:25
    版主
  • 给你个好网页^_^,看了这个以后const就没有不会的了。
    http://tieba.baidu.com/f?kz=363486800  


    0xBAADF00D
    2009年6月30日 17:08
    版主
  • const关键字意义有很多,至少有5条,建议楼主多看些基础知识。
    比如你这个问题,在函数后面加上一个const就是说明该函数只能读取相关数据,当然如果你一定要用const,
    也可以将需要修改值的那个变量声明为mutable,这样也可以实现。
    2009年7月3日 7:27