抽象类和向量
在面向对象编程中,抽象类充当定义各个类之间共同行为的蓝图。然而,在尝试实例化抽象类向量时可能会遇到问题。
出现“无法实例化抽象类”错误是因为向量要求其元素是可以分配内存的具体对象。另一方面,抽象类并不打算直接实例化,因为它们包含必须重写的纯虚函数。
为了克服这个问题,一种解决方法是将抽象类替换为实现必要的虚拟函数,如建议的:
class IFunnyInterface { public: virtual void IamFunny() { throw new std::exception("not implemented"); } };
但是,这种方法可能并不可取,因为它引入了不必要的实现细节,这些细节可以在抽象基础中避免
更符合 C 语言习惯的解决方案是使用指向抽象类的指针向量:
std::vector<IFunnyInterface*> ifVec;
这允许多态行为并防止对象切片。指向抽象类的指针能够存储派生类的对象,使您能够保留对每种类型的特定功能的访问。
以上是如何在 C 中使用抽象类向量?的详细内容。更多信息请关注PHP中文网其他相关文章!