虚函数(动态绑定)对于 OO/C++的重要性

简介: 从商业角度看,如果没有虚函数,那么也就没有什么理由要从传统的 C 转移到C++了。(在本FAQ中我们将忽略泛型编程和标准库)。技术人员通常认为在C和非面向对象的C++之间有很大的区别,但如果没有面向对象,这个区别通常不足以证明培训开发者,新工具等的成本是值得的。
虚函数(动态绑定)对于 OO/C++来说是主要的吗?

是的!

没有虚函数,C++ 就不是面向对象的了。算符重载和非虚成员函数很好,但毕竟,它们只是更典型的C概念中传递一个struct的指针给函数的句法装饰而已。虽然标准库包含了许多模板以实现同样非常好的“泛型编程(译注:也称通用编程,"generic programming")”技术,但虚函数仍然是用C++进行面向对象编程的核心。

从商业角度看,如果没有虚函数,那么也就没有什么理由要从传统的 C 转移到C++了。(在本FAQ中我们将忽略泛型编程和标准库)。技术人员通常认为在C和非面向对象的C++之间有很大的区别,但如果没有面向对象,这个区别通常不足以证明培训开发者,新工具等的成本是值得的。换句话说,如果我被某个经理征询意见,是否从C转向非面向对象的C++(也就是说,转换语言而不转换典范),那么我可能会劝阻他这样做,除非有逼不得已的面向工具的原因。从商业角度看,面向对象能使系统具有可扩展性和可适应性,但只有C++类的语法而没有面向对象的话,就不会减少维护成本,而实际上会增加培训成本。

底线:没有虚函数的C++不是面向对象。用类编程而没有动态绑定则称为“基于对象”,而不是“面向对象”。踢出虚函数和踢出OO(译注:即面向对象)是一回事。所剩下的就是基于对象编程了,和最初的Ada语言类似(顺便说一下,新的Ada语言支持OO而不是基于对象编程了)。

目录
相关文章
|
26天前
|
C++
9. C++虚函数与多态
9. C++虚函数与多态
26 0
|
1月前
|
设计模式 编解码 算法
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案(三)
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案
43 0
|
1月前
|
存储 设计模式 编译器
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案(一)
【C/C++ 虚函数以及替代方案】C++ 虚函数的使用开销以及替代方案
60 0
|
1月前
|
存储 安全 编译器
内存对齐:C/C++编程中的重要性和技巧
内存对齐:C/C++编程中的重要性和技巧
44 1
|
3月前
|
存储 C++ 容器
第十四章:C++虚函数、继承和多态详解
第十四章:C++虚函数、继承和多态详解
29 0
|
3月前
|
C++
C++析构函数定义为virtual虚函数,有什么作用?
C++析构函数定义为virtual虚函数,有什么作用?
28 0
|
1月前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
27 0
|
1月前
|
算法 Java 编译器
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
25 0
|
28天前
|
存储 程序员 编译器
【C++ 模板类与虚函数】解析C++中的多态与泛型
【C++ 模板类与虚函数】解析C++中的多态与泛型
46 0
|
1月前
|
存储 算法 编译器
【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)
多态是面向对象编程中的一个重要概念,指的是同一个消息被不同类型的对象接收时产生不同的行为。通俗来说,**就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态**。
44 0

热门文章

最新文章