在C++中使用"this"关键字

mot*_*sch 59 c++ this

可能重复:
在C++中过度使用此代码气味
何时应该在C++中使用"this"关键字?
有没有理由使用这个 - >

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

Person::Person(int age) {
    _age = age;
}
Run Code Online (Sandbox Code Playgroud)

相反:

Person::Person(int age) {
    this->_age = age;
}
Run Code Online (Sandbox Code Playgroud)

orl*_*rlp 81

是的,它不是必需的,通常省略.在范围中覆盖变量后,可能需要访问变量:

Person::Person() {
    int age;
    this->age = 1;
}
Run Code Online (Sandbox Code Playgroud)

这个:

Person::Person(int _age) {
    age = _age;
}
Run Code Online (Sandbox Code Playgroud)

这是非常糟糕的风格; 如果您需要具有相同名称的初始值设定项,请使用此表示法:

Person::Person(int age) : age(age) {}
Run Code Online (Sandbox Code Playgroud)

  • @Stormsson [会员初始化名单.](http://en.cppreference.com/w/cpp/language/initializer_list) (15认同)
  • 我不知道最后一个语法叫什么,你能不能给我一些关于搜索内容的提示/信息,以了解它是如何工作的? (4认同)

Ric*_*ich 22

这是程序员的偏好.我个人喜欢使用,this因为它明确地标记了对象成员.当然,_它做同样的事情(只有当你遵循惯例)

  • 使用`this`来明确标记对象成员也只有在遵循约定时才有效. (12认同)
  • 如果遵循惯例,下划线只会做同样的事情. (8认同)
  • 注意@Rich提到的"约定"是使用下划线前缀来表示对象成员.如果不遵循约定,则method参数与对象成员具有完全相同的名称,并且需要"this"以避免歧义.但我相信一个明确的"这个""无论你是否遵循惯例都有效. (3认同)

Mua*_*Dib 9

无论哪种方式都有效,但许多地方都有编码标准,可以指导开发人员这样或那样.如果没有这样的政策,请跟随你的心.但有一件事,如果您使用它,它真的有助于代码的可读性.特别是如果您没有遵循类级变量名的命名约定.


Alo*_*ave 5

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


bal*_*lki 5

是的。除非,有歧义。

  • `o 避免某些编译器优化虚拟函数调用`,怎么办? (13认同)