欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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就变成了常对象,常对象不可以调用普通函数