this指针,链式编程,常函数与常对象

this指针指向被调用的成员函数所属的对象(谁调用函数那么函数内部就会传入一个指向该对象的指针)

  • this指针隐藏在每一个类的非静态成员函数中
  • 静态成员函数只能访问静态成员变量,不能访问普通成员变量
  • 解决命名冲突
#include<iostream>
using namespace std;
class person
{
public:
 	person(int a)    //有参构造函数
	 {
 	   	 m_age = a;
 	 }
 	void add1(person &p)             //这里返回的是一个void类型,相当于只能进行一次加法
 	{
 		 this->m_age += p.m_age;
 	}
 	person& add2(person &p)           //这里返回的是一个类类型的对象
	 {
 		 this->m_age += p.m_age;
  		return *this;                 //因为返回的是类类型的对象,所以要对this进行解引用
	 }
private:
 	int m_age;
};
void test()
{
 	person p1(10);
 	person p2(10);
 	p2.add1(p1);                      //调用add1函数只能调用一次        
 	p2.add2(p1).add2(p2).add2(p2);    //调用add2类型的函数可以连续调用又称作链式编程
}
int main()
{
 	test();
 	return 0;
}

常函数与常对象:

  • void fun() const{}常函数,

  • 常函数不允许修改指针指向的值,要是有需求修改成员的值那么就可以在成员变量 前面加上mutable.

  • 常函数其实修饰的是this指针,this指针因为指向不能改变所以就相当于 type *const
    this,那么常函数的this指针就相当于const type *const this

  • 在对象前面加上const就变成了常对象,常对象不可以调用普通函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值