gpt4 book ai didi

c++ - "this"是类方法中的默认参数吗?

转载 作者:行者123 更新时间:2023-12-01 23:05:26 33 4
gpt4 key购买 nike

我在某处读到“this”关键字是类的任何方法中的默认参数(我想它是不可见的或其他东西)。这是真的吗?

最佳答案

“默认参数”是错误的术语。 this 可以被认为是传递给成员函数的隐式参数。如果没有成员函数,那么您可以使用这样的自由函数来模拟它们:

struct Foo {
int x = 0;
};

void set_x(Foo* THIS, int x) {
THIS->x = x;
}

但是,成员函数确实存在,上面可以写成:

struct Foo {
int x = 0;
void set_x(int x) {
this->x = x;
}
};

this 未显式传递给 Foo::set_x。尽管如此,在方法内部您可以使用它来引用当前对象。可以说是成员函数的隐式参数。

然而,这还不是全部。在成员函数中,您实际上不需要 this 来引用类的成员。代替 this->x 只是 x 也可以工作,与其他语言相比,省略 this-> 是常见的风格,除非必要的。有关更多详细信息,请参阅 https://en.cppreference.com/w/cpp/language/this .

请注意,它不是一个类的所有 方法的隐式参数。在静态成员函数中不能通过this 引用当前对象,因为静态成员函数中没有“当前对象”。

还与显式传递 self 的 python 进行比较:

 class Foo:
def __init__(self):
self.x = 0
def set_x(self,x):
self.x = x

关于c++ - "this"是类方法中的默认参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70993819/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com