可能重复:
在C++中过度使用此代码气味
多年前,我养成了在访问成员变量时使用this->的习惯.我知道这不是绝对必要的,但我认为它更清楚.
然后,在某些时候,我开始更喜欢更简约的风格,并停止了这种做法......
最近我被一个更年轻的同龄人问到我是否认为这是一个好主意而且我发现我对自己的偏好没有真正的答案...这真的是一个完全风格的选择还是有真正的原因为什么不在成员变量访问前加上this->更好?
我正在处理一个大型代码库,它始终使用以下构造
class MyClass
{
public:
void f(int x);
private:
int x;
};
void MyClass::f(int x)
{
'
'
this->x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我总是使用,因此更喜欢这种形式
class MyClass
{
public:
void f(int x);
private:
int _x;
};
void MyClass::f(int x)
{
'
'
_x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢后者的原因是它更简洁(更少的代码=更少的潜在错误),并且我不喜欢在范围内同时拥有多个同名的变量,我可以避免它.也就是说,我现在越来越多地看到以前的用法.我不知道第二种方法有什么好处吗?(例如,对编译时的影响,使用模板化代码等等)两种方法的优点是否足够重要,另一方面是否重构?我要问的原因是,虽然我不喜欢代码中存在的第二种方法,但是引入更多错误的工作量和相关风险并不值得重构.
我用C++编程多年,但我对一件事情仍有疑问.在其他人代码的许多地方,我看到类似的东西:
void Classx::memberfunction()
{
this->doSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果我需要导入/使用该代码,我只需删除this-> part,我从未见过任何破坏或有一些副作用.
void Classx::memberfunction()
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
那么,你知道使用这种结构的任何理由吗?
编辑:请注意我在这里谈论成员函数,而不是变量.我知道当你想要区分成员变量和函数参数时,可以使用它.
编辑:明显重复: 有没有理由不使用"这个"("自我","我",......)?
//C++ Made Easy HD 26 - Introduction to Classes
//Michael LeCompte
#include <iostream>
#include <string>
using namespace std;
class Player {
public:
Player() {
cout << "1st overload" << endl;
}
Player(int Health){
cout << "2nd overload" << endl;
this->health = Health;
}
Player(int Health, int attPow){
cout << "3nd overload" << endl;
this->health = Health;
attackPower = attPow;
}
~Player() {
cout << "Player instance destroyed" << endl;
}
//Mutators
void setHealth(int val) {
health = val;
}
void …Run Code Online (Sandbox Code Playgroud)