静态数据在类的构造与析构中的使用过程

问题遇到的现象和发生背景

题目:要求构造Animal类,Duck类公有继承,然后建立私有静态数据成员numbers,并定义一个函数返回数据值.
输入进来的Animal对象个数,返回numbers ,同等Duck个数,再返回numbers,再释放Aniaml,返回,再释放Duck返回。

问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
class Animal {
private:
    static int numbers;
public:
    Animal() {
        cout << "Aniaml" << endl;
        numbers += 1;
    }                            //构造函数
    static int gtter ()  {
        return numbers;
    }
    ~Animal() {
        numbers -= 1;
    }
};
int Animal::numbers = 0;
class Duck :public Animal {
    int n;
public:
    Duck() {
        cout << "Duck"<<endl;
        n = gtter();
        n+= 1;
    }

    ~Duck() {
        n -= 1;
    }
};
int main() {
    int N;
    cin >> N;
    Animal* p[8];
    for (int i = 0; i < N; i++) {
        p[i] = new Animal;
    }
    cout<< p[N-1]->gtter() << endl;
    Duck* q[8];
    for (int i = 0; i < N; i++) {
        q[i] = new Duck;
    }
    cout<< q[N-1]->gtter() << endl;
    for (int i = 0; i < N; i++) {
        delete p[i];
    }
    cout << q[0]->gtter()<<endl;
    for (int i = 0; i < N; i++) {
        delete q[i];
    }
    Animal *qq;
    cout << qq->gtter();
}

这个自己写的代码不太确定能不能算对。看起来运行结果没问题。
想问问,建立多个对象(用户输入确定)与释放怎么比较好的实现以及定义类的指针是不是不会建立对象但可以引用类中的函数

静态是全局的

可以用类的多态现象,子类对父类继承时如果父类的虚函数在子类进行重写,那么当构建父类指针或引用指向子类的函数时,会直接调用子类函数。
不懂再问,望采纳!