成员函数及this指针的意义

同样受访问修改符的限制,被public修饰的可以被外部访问,被private修饰的则不能被外部访问

class Object
{
	public:
		int x;
		int y;
		void Test()
		{
			printf("hello,world!\n");
		}	
	private:
		void Test2()
		{
			printf("I am a private function!\n");
		}
};

引例:要在Test()函数中,将x,y打印出来?怎么做?

class Object
{
	public :
		int x;
		int y;
		void Test()
		{
		//打印x,y
		}
};
Object obj;
obj.Test();//已经定义了一个obj对象,如果在Test函数里把x,y打印出来?

方法一:调用函数的时候传递一个指针
方法二:使用this指针

class Object
{
	int x;
	int y;
	void Test()
	{
		printf("x=%d,y=%d\n",this-x,this-y);
	}
};
obj.Test();
//当Test被调用时,已经把对象obj的指针传给它了。
//编译器内部就是这么实现的,没必要在画蛇添足地传一个指针给它

使用this指针,可以直接访问本类的其他成员(变量,函数),不受public/private的限制

class Object
{
	private:
		int x;
		int y;
	public:
		int Add()
		{
			return this-x+this-y;//用this-调用其他成员
		}
		void Test()
		{
			printf("Sum:%d\n",this-Add());//用this调用其他成员
		}
}

观察:this是否就是对象obj的地址

  1. 成员函数:定义在class内的函数
  2. 成员函数的调用:也是仍然点号或箭头,也受public/private的限制
  3. 使用隐含的this指针,来访问本对象的成员,this指针指向了对象自己
    注:this指针是在形式上做了一个简化,使得用户少传一个对象的指针作为参数

深圳程序员交流群550846167

最新回复(0)
/jishulAbJZs8UO6_2Fm6ur1JgMxDGMC49scRfGDfy7dcWlGV_2FE_3D4858726
8 简首页