假设我有一个抽象类 Cat,它有几个具体的子类 Wildcat、Housecat 等。
我希望我的数组能够存储指向某种类型的猫的指针,而无需知道它到底是哪种类型。
当我尝试动态分配一个 Cat 数组时,它似乎不起作用。
Cat* catArray = new Cat[200];
最佳答案
通过创建一组指向 Cat 的指针,如
Cat** catArray = new Cat*[200];
现在您可以将 WildCat、HouseCat 等实例放在阵列中的不同位置,例如
catArray[0] = new WildCat();
catArray[1] = new HouseCat();
catArray[0]->catchMice();
catArray[1]->catchMice();
几个注意事项,完成后
a) 不要忘记删除 catArray 中分配的实例,如 delete catArray[0] 等。
b) 不要忘记使用
delete [] catArray;
您还应该考虑使用 vector 为您自动化 b)
关于c++ - 如何创建抽象类的动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717854/