成员函数及this指针的意义

来源:互联网 发布:淘宝二手市场入口 编辑:程序博客网 时间:2024/05/19 13:25

同样受访问修改符的限制,被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指针是在形式上做了一个简化,使得用户少传一个对象的指针作为参数
0 0