首页 > 后端开发 > C++ > 如何在 C 中使用抽象类向量?

如何在 C 中使用抽象类向量?

Susan Sarandon
发布: 2024-12-17 13:09:25
原创
954 人浏览过

How Can I Use a Vector of Abstract Classes in C  ?

抽象类和向量

在面向对象编程中,抽象类充当定义各个类之间共同行为的蓝图。然而,在尝试实例化抽象类向量时可能会遇到问题。

出现“无法实例化抽象类”错误是因为向量要求其元素是可以分配内存的具体对象。另一方面,抽象类并不打算直接实例化,因为它们包含必须重写的纯虚函数。

为了克服这个问题,一种解决方法是将抽象类替换为实现必要的虚拟函数,如建议的:

class IFunnyInterface
{
public:
    virtual void IamFunny() { throw new std::exception("not implemented"); }
};
登录后复制

但是,这种方法可能并不可取,因为它引入了不必要的实现细节,这些细节可以在抽象基础中避免

更符合 C 语言习惯的解决方案是使用指向抽象类的指针向量:

std::vector<IFunnyInterface*> ifVec;
登录后复制

这允许多态行为并防止对象切片。指向抽象类的指针能够存储派生类的对象,使您能够保留对每种类型的特定功能的访问。

以上是如何在 C 中使用抽象类向量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板