Член изменения наследования C ++ - PullRequest
1 голос
/ 09 июля 2020

В настоящее время изучаю С ++, и у меня есть вопрос: почему я должен использовать функцию для изменения члена родительского класса, а не просто изменять его без функции?

class Shape{
private: 
  int a;
protected:
  int b;
public:
  int c;
};

class Rectangle: public Shape{
public:
  c = 123;
  void change_c(){c = 321;}
};

1 Ответ

1 голос
/ 09 июля 2020

Присвоение значения переменной, как в операторе c = 123;, недопустимо вне объявления переменной или присвоения, выполняемого внутри функции. Это означает, что вы не можете выполнить это из области класса производного класса:

class Rectangle: public Shape{
public:
  c = 123; // <-- illegal
  int d = 123; // <-- OK, in C++11 and later
  Rectangle() { c = 321; } // <-- OK
  void change_c(){ c = 321; } // <-- OK
}
...