Is 'this' the cpp equivalent of 'self' in python?

吃可爱长大的小学妹 提交于 2020-05-28 07:50:07

问题


I'm experienced in Python and now learning cpp to speed up code. After reading a bit this seems to be the cpp equivalent of self. I found a question explaining the difference from a cpp user's point of view but I'd like to know any differences for a python user's point of view.


回答1:


The major difference is that you mostly don't need this in C++, because there is a syntactic distinction between defining a member and referring to it.

Contrast

Python:

class Foo:
    def __init__(self):
        self._bar = 42

    def baz(self):
        return self._bar += 1

C++:

class Foo {
    int bar = 42;
public:
    int baz() { return bar += 1; }
}



回答2:


In addition to the answer already given, self in Python is just a conventional name chosen for the first argument of a class method which refers to the object itself that the method is called on directly.

In C++, this is a keyword that is not explicitly specified as a parameter of a non-static class member function, but automatically refers to the instance that such a function is called on as pointer.

That means this is not a reference to the object, but a pointer to it. So

this.member = 4;

is not possible. this must be dereferenced first to obtain a reference to the object from the pointer:

this->member = 4;

or (uncommonly)

(*this).member = 4;

With a few exceptions relating to name lookup in templates, the names of members refer to the current instances member automatically, as explained in the other answer, so this-> can be dropped, usually:

member = 4;


来源:https://stackoverflow.com/questions/60414133/is-this-the-cpp-equivalent-of-self-in-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!