почему мы не используем это ключевое слово, если конструктор определен вне класса? - PullRequest
0 голосов
/ 13 июня 2019

при определении конструктора вне класса это ключевое слово не используется для создания переменных.

Person::Person(int initialAge){
        // Add some more code to run some checks on initialAge
        if(initialAge > 0){
            this.age = initialAge;
        }else{
            this.age =0;
        }

    }

1 Ответ

3 голосов
/ 13 июня 2019

Тот факт, что вы определяете свой конструктор так, как вы это делаете, не влияет на то, используете ли вы this.

this может использоваться для устранения неоднозначности между локальной переменной или членом класса.

Поскольку в области действия нет локальной переменной age, язык предполагает, что вы ссылаетесь на члена класса, поэтому this является излишним, хотя некоторые люди сохраняют его для предполагаемой ясности.

В C ++ вам нужно написать this->age для доступа к члену или менее понятное (*this).age.

Ваш конструктор может быть записан как

Person::Person(int initialAge) : age(std::max(0, initialAge))
{
}

Ссылка: Преимущества списков инициализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...