Нужен ли мне этот указатель в моих методах класса? - PullRequest
0 голосов
/ 11 января 2019

Есть ли разница между getA () и getB () и setA () и setB ()?

Если они одинаковы, какой синтаксис предпочтителен?

    class A{
    public:
        int x;

        int getA(){return x;}
        int getB(){return this->x;}
        void setA(int val){ x = val;}
        void setB(int val){ this->x = val;}

    };

    int main(int argc, const char * argv[]) {
        A objectA;
        A objectB;

        object.setA(33);
        std::cout<< object.getA() << "\n";

        objectB.setB(32);
        std::cout<< object.getB() << "\n";

        return 0;
    }

1 Ответ

0 голосов
/ 11 января 2019

То же самое в вашем случае использования. Обычно желательно по возможности опускать this->, если только у вас нет местного руководства / соглашения по стилю кодирования.

Это имеет значение, когда у вас есть локальная переменная или параметр, который скрывает переменную-член. Например:

class Enemy {
public:
    int health;
    void setHealth(int health) {
        // `health` is the parameter.
        // `this->health` is the member variable.
        this->health = health;
    }
};

По желанию, этого можно избежать, если в вашем проекте есть соглашение об именах. Например:

  • Всегда суффиксные переменные-члены с _, например health_
  • Всегда добавляйте переменные-члены к m_, например m_health
...