在C ++中使用“ this”关键字

可能重复:
在C ++中过度使用它会产生代码异味
什么时候应该在C ++中使用“ this”关键字?
是否有任何理由使用此->

在C ++中,通常会省略关键字this吗? 例如:

Person::Person(int age) {
    _age = age;
}

相对于:

Person::Person(int age) {
    this->_age = age;
}
moteutsch asked 2019-11-07T18:17:31Z
6个解决方案
80 votes

是的,它不是必需的,通常会被省略。 但是,在变量中被覆盖后,可能需要访问变量:

Person::Person() {
    int age;
    this->age = 1;
}

另外,这:

Person::Person(int _age) {
    age = _age;
}

这是很糟糕的风格。 如果您需要同名的初始化程序,请使用以下符号:

Person::Person(int age) : age(age) {}

此处提供更多信息:[https://en.cppreference.com/w/cpp/language/initializer_list]

orlp answered 2019-11-07T18:17:51Z
21 votes

这是程序员的偏爱。 我个人喜欢使用this,因为它明确标记了对象成员。 当然_会做同样的事情(仅当您遵循约定时)

Rich answered 2019-11-07T18:18:16Z
9 votes

两种方法都可以,但是很多地方都有编码标准,可以指导开发人员一种或另一种方式。 如果没有这样的政策,那就随心所欲。 但是,有一件事,如果您确实使用它,它确实有助于提高代码的可读性。 特别是如果您未遵循类级变量名的命名约定。

Muad'Dib answered 2019-11-07T18:18:35Z
5 votes

this指向引用其成员函数的对象,因此它是可选的。

Alok Save answered 2019-11-07T18:18:59Z
3 votes

对于上述示例情况,通常会省略,是的。 但是,两种方法在语法上都是正确的。

Chad answered 2019-11-07T18:19:19Z
3 votes

是。 除非有歧义。

有时也使用它来避免某些编译器优化虚拟函数调用。

balki answered 2019-11-07T18:19:40Z
translate from https://stackoverflow.com:/questions/6779645/use-of-this-keyword-in-c