У меня есть базовый класс с двумя закрытыми переменными и открытый метод для их печати. Унаследовав его, я получаю метод, который использует переменные, которые не наследуются производному классу. Однако он работает и вызывает этот метод со значениями, заданными конструктором базового класса.
Даже путем добавления к производному его собственного конструктора по умолчанию и того же int x, y;переменных, с различными значениями по умолчанию, метод выводит значения по умолчанию для базового класса. Почему это происходит, и как я могу избежать этого? Я знаю о защищенных членах, но все же, что здесь происходит? Я сначала попробовал это с производным классом пустым (без конструктора и переменных), и результат тот же. Как можно использовать переменные, которые не наследуются?
class base {
private:
int x, y;
public:
base(int px=1, int py=2)
:x(px), y(py)
{}
inline void print() const {
cout << x << ", " << y << '\n';
}
};
class derived : public base {
private:
int x, y;
public:
derived(int px = 3, int py = 3)
:x(px), y(py)
{}
};
int main{
derived e;
e.print(); // prints 1, 2
}