Я сейчас прохожу курс C ++, и они хорошо объясняют все до тех пор, пока не дойдет до разделения файлов между «обещаниями» заголовка и реализацией.Я полностью изучил программирование на Python, поэтому я привык просто объявлять вещи и импортировать класс по мере необходимости, так что весь этот процесс, состоящий в разделении обещания и последующей реализации логики, для меня странен.
В любом случае, у меняпроблема в том, что в ходе курса они говорили, что на самом деле вам никогда не нужно использовать this->
, но когда я пытаюсь явно определить класс в том же файле .cpp, я могу заставить конструктор работать только тогда, когда я использую this->
.Может кто-нибудь объяснить или связать обсуждение, которое объясняет это?Мне не удалось найти ссылку, которая объясняет эту проблему в контексте определения всего в одном файле.
class Person {
public:
string name;
int age;
int height;
int weight;
Person (string name, int age, int height, int weight) {
name = name;
age = age;
height = height;
weight = weight;
}
};
int main () {
Person new_person("Doug", 20, 70, 170);
}
Это приводит к тому, что все значения, которые я передаю из основной функции, не инициализируются.Однако, если я добавлю this-> к каждой строке в конструкторе, все будет работать нормально.Примеры, которые я нашел, не используют this->
, поэтому я запутался, почему это необходимо здесь.Возможно, это связано с пространствами имен, которые все еще немного сбивают меня с толку (в целом используется пространство имен std; вещь), но я подумал, поскольку это все в одном файле .cpp, это должно работать.