c++ - 如何创建抽象类的动态数组?

标签 c++ arrays abstract-class abstract

假设我有一个抽象类 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) 不要忘记使用

删除 catArray 本身
 delete [] catArray;

您还应该考虑使用 vector 为您自动化 b)

关于c++ - 如何创建抽象类的动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717854/

相关文章:

c++ - CreateProcess 忽略 lpCurrentDirectory/父工作目录

javascript - 使用 jQuery 从数组数组动态生成 <table> 时如何排除 ID 列

c++ - 将数组传递给函数以显示井字棋盘

c# - 接口(interface)访问修饰符困境

c++ - MD5暴力破解——高效的多线程实现

c++ - 对C++中的char指针的困惑

javascript - 如何使用lodash通过键将一个数组对象添加到另一个二维数组

java - 如何解决..抽象类?泛型?

java - 使方法实现的返回类型比抽象方法更具体

c++ - 使用不等于与等于时是否有任何性能差异