函数后加const的三种情况:
1、 非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
2、 表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用),唯一的例外是对于mutable修饰的成员。
3 、(1)加了const的成员函数可以被非const对象和const对象调用
(2)不加const的成员函数只能被非const对象调用
例:
#include<iostream>
using namespace std;
class Test
{
public:
Test(int a)
{
this->a = a;
}
static void print_static() //const //1.错误
{
cout<< "静态成员函数" <<endl;
}
void print_const() const
{
//a++; //2.错误
cout << "加const的成员函数" <<endl;
}
void print()
{
cout<< "普通成员函数" <<endl;
}
private:
int a;
};
int main()
{
const Test t1(10);
Test t2(20);
t1.print_const();
//t1.print(); //3.错误 const对象不能调用非const函数
t2.print_const();
t2.print();
return 0;
}