C++--类与对象(中)--const成员--取地址及const取地址操作符重载

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 的运用就可以了,多敲代码!!!一起加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值