同样受访问修改符的限制,被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的地址
- 成员函数:定义在class内的函数
- 成员函数的调用:也是仍然点号或箭头,也受public/private的限制
- 使用隐含的this指针,来访问本对象的成员,this指针指向了对象自己
注:this指针是在形式上做了一个简化,使得用户少传一个对象的指针作为参数
深圳程序员交流群550846167