При наследовании метод родительского класса, при вызове его в дочернем, возвращает значение 0, хотя должен быть не ноль
Есть родительский класс А, у него есть поле - массив интов. И методы, чтобы заполнить массив, вернуть его элемент по индексу и вывести массив на экран.
class A {
protected:
int n[3];
int* ptr = n;
int k = 0;
public:
A(){};
void add(int x) {
n[k] = x;
k++;
}
int getint(int v) {
return n[v];
}
virtual void show() {
for (int i = 0; i < 3; i++) {
if (ptr[i] != NULL) {
cout << n[i] << ' ';
}
}
cout << endl;
}
};
Благодаря методу getint(), хочу выборочно передавать элемент массива в переменную s дочернего класса:
class B : public A {
private:
int s;
public:
B() {
s = getint(1);
}
void show() {
cout << s;
cout << endl;
}
};
Главная часть программы:
A a;
a.add(9);
a.add(6);
a.show();
B b;
b.show();
Итак, я хотел получить на выводе следующую картину: a.show() -> 9 6, b.show() -> 6, но по итогу:

Вопросы: Почему появляется этот ноль? В чем ошибка?