美文网首页C++程序员
C++ this指针机制

C++ this指针机制

作者: DayDayUpppppp | 来源:发表于2017-04-28 10:19 被阅读0次

    this 指针

    class Point {
        int x;
        int y;
    public:
        Point() {
            x = 0;
            y = 0;
        }
        void add() {
            x = x + 1;
            y = y + 1;
        }
    
    };
    
    void add2(Point & _p) {
        _p.x++;
        _p.y++;
    }
    
    int main() {
        Point p1;
    //add函数和add2函数有什么区别?
        p1.add();
        add2(p1);
    }
    

    这是一个严肃的问题,add函数和add2函数有什么区别,哪一个效率更高?

    答案:一样的,编译器内部已经成员函数(add函数)转换为了和add2相同的函数。

    对于add和add2函数:

    1. 它们一个是类的成员函数,一个是普通的函数
    2. 对于类的成员函数add,其实在类的设计里面隐藏了this指针

    也就是所,真正的add函数是

    void add(Point * const  this) {
            this->x = this->x + 1;
            this->y = this->y + 1;
        }
    
    

    c++的语言设计机制上隐藏掉了这一点,但是比如python就没有采用这样的设计,python所有的成员函数调用都是有一个self的参数,这个self的功能和this的功能是相似的。

    相关文章

      网友评论

        本文标题:C++ this指针机制

        本文链接:https://www.haomeiwen.com/subject/kieozttx.html