При наследовании метод родительского класса, при вызове его в дочернем, возвращает значение 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, но по итогу: вывод

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


Ответы (0 шт):