Use of “this” keyword in C++ [duplicate]

2019-01-08 05:59发布

Possible Duplicate:
Is excessive use of this in C++ a code smell
When should you use the "this" keyword in C++?
Is there any reason to use this->

In C++, is the keyword this usually omitted? For example:

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

As opposed to:

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

标签: c++ this
6条回答
甜甜的少女心
2楼-- · 2019-01-08 06:21

For the example case above, it is usually omitted, yes. However, either way is syntactically correct.

查看更多
甜甜的少女心
3楼-- · 2019-01-08 06:22

Yes. unless, there is an ambiguity.

It is also used sometimes to avoid some compilers optimizing virtual function call.

查看更多
孤傲高冷的网名
4楼-- · 2019-01-08 06:24

It's programmer preference. Personally, I love using this since it explicitly marks the object members. Of course the _ does the same thing (only when you follow the convention)

查看更多
▲ chillily
5楼-- · 2019-01-08 06:27

this points to the object in whose member function it is reffered, so it is optional.

查看更多
叛逆
6楼-- · 2019-01-08 06:32

Yes, it is not required and is usually omitted. It might be required for accessing variables after they have been overridden in the scope though:

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

Also, this:

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

It is pretty bad style; if you need an initializer with the same name use this notation:

Person::Person(int age) : age(age) { }
查看更多
Deceive 欺骗
7楼-- · 2019-01-08 06:42

Either way works, but many places have coding standards in place that will guide the developer one way or the other. If such a policy is not in place, just follow your heart. One thing, though, it REALLY helps the readability of the code if you do use it. especially if you are not following a naming convention on class-level variable names.

查看更多
登录 后发表回答