C++类与对象中
const成员
const修饰类的成员函数
利用const对成员函数进行修饰,就叫做const成员函数,实际修饰的是内部的隐含指针this,表示该成员函数不能对类的任何成员进行修改.
形式:const this :const A const
class A{
public:
int setI(int i){
_i = i;
//==非const成员函数中,可以调用const成员函数
getI(); //可以实现 const *=*
}
//==const修饰this指针:this指针指向的对象内容不能变
int getI()const{ //const this :const A* const
//_i = 100;
//this->_i = 100;
//setI(10); 类型不匹配
return _i;
}
private:
int _i;
};
//==这里是非成员函数,不允许加const 类型的函数
void fun(int a)//const
{
a = 100;
}
操作代码:
void test1(){
A a;
//原则:权限够不够(读写)--->权限不能放大,但是可以缩小
//非const对象可以调用const成员函数:可以
a.setI(10);
a.getI();
const A b;
//const对象可以调用非const成员函数:不能
//b.setI(10);
b.getI();
}
取地址及const取地址操作符重载
下面的这个代码有一个对比,一个对其中的隐式指针this 进行了修饰,则这个this指针是const类型的,无法改变,在你要对其进行指针输出的时候,编译器会自动的报错!
class A{
public:
//简单的两个内部成员函数的书写
int setI(int i){
_i = i;
}
int getI()const{
return _i;
}
//对比
//==this: A* const
A* operator&(){
return this;
}
//==this: const A* const
A* operator&()const{ //表示内部的指针是一个const指针
//return this; 报错
}
private:
int _i;
};
具体操作:
void test(){
A obja;
A* pa = &obja;
pa->setI(10);
const A objb;
const A* pb = &objb;
}
这一章其实涉及到的知识点并不多,主要是对const的理解,熟练掌握const 的运用就可以了,多敲代码!!!一起加油!!!