this指针,链式编程,常函数与常对象
程序员文章站
2022-07-12 16:32:05
...
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就变成了常对象,常对象不可以调用普通函数
上一篇: iOS 链式编程思想
下一篇: sort函数对结构体的排序