const修饰成员函数
用const修饰的成员函数时,const修饰this指针指向的内存区域,成员函数体内不可以修改本类中的任何普通成员变量, 当成员变量类型符前用mutable修饰时例外。
nt myFun(void) const //const修饰的是成员函数
{}//函数内部不能修改 普通成员变量 mutable修饰时例外
const修饰对象 叫常对象
常对象只能调用const修饰的成员函数;
#include <iostream>
using namespace std;
class Data
{
private:
int data;
mutable int num;
public:
void myDataPrint(void)const
{
//data = 20000;//err const修饰的成员函数 不可以修改普通成员变量
cout << this->data << endl;
num = 1000;//mutable修饰num 可以在const修饰的函数内修改
cout << this->num << endl;
}
void setData(int data)
{
this->data = data;
}
Data()
{
cout << "无参构造"<< endl;
}
Data(int data)
{
this->data = data;
cout << "有参构造"<< endl;
}
Data(const Data &ob)
{
this->data = ob.data;
cout << "拷贝构造"<<endl;
}
~Data()
{
cout <<"析构函数"<< endl;
}
void hahaha(void)
{
Data haha;
cout << haha.num << endl;
}
};
void test0()
{
Data ob1(100);
ob1.myDataPrint();
ob1.hahaha();
}
void test1()
{
const Data ob2(200);
//ob2.setData(10000);
ob2.myDataPrint();
}
int main(int argc, char *argv[])
{
test0();
return 0;
}