类中的const成员函数,以前看书说的是函数内不修改变量的值,就只有这一个作用。后来发现好像还有些别的不同,先看下面代码:
#include <iostream>
using namespace std;class A
{
int m,n;
public:
A(int a,int b):m(a),n(b){}
int get()
{
return m;
}
int get() const
{
return m+n;
}
};int main()
{
A a(3,5);
const A b(3,5);
cout<<a.get()<<endl;
cout<<b.get()<<endl;
return 0;
}
代码的输出结果是3和8,那是不是在有2个同名的函数(1个带const)时,非静态对象调用没const的,静态对象调用有const的?

解决方案 »

  1.   

    另,有没关于类中的const成员函数的详细资料
      

  2.   

    const对象为常量对象,它只能调用声明为const的成员函数。
      

  3.   

    看看这个
    http://baike.baidu.com/view/1065598.htm
      

  4.   


    那不是const常量的2个都可以调用,是不是默认调用的是不是const的函数
      

  5.   

    VC中并未定义const函数是否不许修改参数,你的程序出现这样的结果是因为你定义了2个同名函数,VC把它们作为函数重载,执行时根据变量类型选择执行的结果,跟const函数定义无关。
      

  6.   

    const变量只能调用const成员函数,非const变量优先调用非const成员函数,如果没有相应的非const就调用const成员函数