美文网首页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指针机制

    this 指针 这是一个严肃的问题,add函数和add2函数有什么区别,哪一个效率更高? 答案:一样的,编译器内部...

  • 智能指针share_ptr的若干问题

    一 什么是智能指针 c++的智能指针是利用了c++的RAII机制,这样可以及时的释放资源,且即使代码中触发了异常,...

  • Rust 编程语言-4-理解ownership

    4.1 理解ownership Rust的一个核心概念,通过所有权机制,解决了C/C++语言中的野指针,悬挂指针等...

  • C++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • 智能指针详解

    C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 de...

  • 智能指针

    关键点## RAII机制 C++操作符重载 参考链接## C++11智能指针之unique_ptr shared_...

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • Android 电源管理和思想

    Android的电源管理提出wakelock的是一套全新的机制,跟我们C++里使用的智能指针(Smartpoint...

  • Java基础

    Java和C++的区别?a. Java没有指针。c++可以通过指针直接操作内存,但这个动作是危险的,指针引起的操作...

  • Jna send pointer pointer to c++

    目的: 有这样一个需求,java通过jna传递指针数组给c++,或者指针的指针 解决方案: c++ : 声明 vo...

网友评论

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

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