this指针

面向对象基础知识

Posted by 谢玄xx on April 10, 2022

this指针——指向成员函数所作用的对象

class Complex
{
public:
	double real, imag;
	void Print()
	{
		cout << real << "." << imag;
	}
	Complex(double r, double i) : real(r), imag(i)
	{
		
	}
	Complex AddOne()
	{
		this->real++;		//等价于real++
		this->Print();		//等价于print
		return *this;
	}
};

int main()
{
	Complex c1(1, 1), c2(0, 0);
	c2 = c1.AddOne();           //c1的AddOne()调用时,this指针指向c1的real,因此c1.AddOne()调用后,实部为2虚部为1,统统赋值给c2
	return 0;
}
//程序输出 2.1,因为调用了一次Print()函数。
  • 下面两张图展示了不同情况下main函数中空指针的调用情况。
  • 可以看出,空指针指向成员函数时,如果这个成员函数里面没有使用this指针,那么就可以正常运行;反之则不行。

  • this是空指针,指向i一定会出错,可能会导致程序崩溃

this指针的一些注意事项

  • 静态成员函数不可以使用this指针。因为静态成员函数并不具体作用于某个对象,而是独立存在的。 (静态成员函数真实的参数个数,就是程序中写出的参数个数)