c++ - 为什么要在 C++ 中使用虚函数?

标签 c++ objective-c polymorphism virtual-functions

这不是关于它们如何工作和声明的问题,我认为这对我来说非常清楚。问题是为什么要实现这个? 我想实际原因是为了简化一堆其他代码来关联和声明它们的基本类型变量,以处理来自许多其他子类的对象及其特定方法?

这可以通过模板化和类型检查来完成吗,就像我在 Objective C 中所做的那样?如果是这样,什么更有效率?我发现将对象声明为一个类并将其实例化为另一个类是令人困惑的,即使它是它的子类也是如此。

抱歉愚蠢的问题,但我还没有用 C++ 完成任何实际项目,因为我是活跃的 Objective C 开发人员(它是一种更小的语言,因此严重依赖 SDK 的功能,如 OSX、iOS)我需要有清晰的认识在两个堂兄弟的任何平行方式上。

最佳答案

是的,这可以通过模板来完成,但是调用者必须知道对象的实际类型(具体类),这会增加耦合。

使用虚函数,调用者不需要知道实际的类 - 它通过指向基类的指针进行操作,因此您可以编译一次客户端,实现者可以根据需要更改实际实现,并且只要接口(interface)不变,客户端就不必知道这一点。

关于c++ - 为什么要在 C++ 中使用虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5192282/

相关文章:

iphone - 根据按下的按钮(iOS)检索自定义数据?

java - 当一个类不想在其父类(super class)中声明所有方法时,如何将其视为子类?

java - 多态性 1 父类(super class) 4 子类

ios - 当从不同的 Controller seguing 时, ScrollView 低于它应该的

c++ - 如何访问许多类,所有类都派生自基类

c++ - 在 "simple c++"模式下编译的程序在从 QtCreator 启动时不起作用

c++ - 解析终端参数 Qt Mac OS X

c++ - QVariant 转换为 QPainterPath

c++ - Array Class 数组的打印输出

objective-c - Xcode 在哪里存储 3rd 方 API secret /密码/id