C++虚函数详解-清华大学谭浩强教程

需积分: 42 1 下载量 109 浏览量 更新于2024-08-24 收藏 8.81MB PPT 举报
"本文主要介绍了虚函数的概念和在C++中的使用,以及C++语言的发展历史和特点。" 在C++编程中,虚函数(Virtual Function)是一个关键特性,它使得面向对象编程中的多态性得以实现。虚函数允许我们通过基类指针或引用调用派生类中的重写函数,即使实际的对象是派生类类型。这样,程序员可以在运行时动态决定调用哪个函数,而不是在编译时静态确定。 虚函数的定义通常在基类中进行,使用`virtual`关键字,如: ```cpp class Base { public: virtual void FuncName(int arg) { // 基类的FuncName函数实现 } }; ``` 一旦一个函数被声明为虚函数,那么在所有继承自这个基类的派生类中,`FuncName`都会保持其虚函数的特性。这意味着在派生类中,即使不使用`virtual`关键字重写这个函数,它仍然会被视为虚函数。例如: ```cpp class Derived : public Base { public: void FuncName(int arg) override { // 派生类的FuncName函数实现 } }; ``` 在这个例子中,`Derived::FuncName`隐式地覆盖了`Base::FuncName`,即使没有再次使用`virtual`关键字。 虚函数的用途在于实现多态,例如: ```cpp Base* basePtr = new Derived(); basePtr->FuncName(10); // 这将调用Derived::FuncName,而不是Base::FuncName ``` 这段代码展示了如何通过基类指针调用派生类的函数,实现了动态绑定或者说是运行时多态。 C++语言本身是由C语言发展而来,C++的设计目标是在保持C语言的效率和灵活性的同时,引入面向对象编程的特性。C++的历史可以追溯到20世纪70年代,从BCPL和B语言演变而来,最终由Bjarne Stroustrup在C语言基础上发展出C++。 C++语言的主要特点包括: 1. 结构化编程:C++支持结构化编程,使得程序的组织清晰,易于理解和维护。 2. 高级语言和汇编语言的结合:丰富的运算符支持,包括位运算,使得C++能够处理底层细节。 3. 可移植性:C++程序在不同平台间移植相对容易。 4. 强大的数据结构和库支持:C++提供了丰富的数据结构,如类、模板等,以及标准模板库(STL),增强了程序的功能和效率。 5. 面向对象:支持类、继承、多态等面向对象特性。 6. 程序设计自由度大:语法结构相对较宽松,但这也增加了学习和调试的难度。 然而,C++的灵活性也意味着它的学习曲线相对较陡峭,对于初学者来说,理解和调试C++程序可能需要更多的时间和努力。尽管如此,由于其强大的功能和广泛的工业应用,C++仍然是许多领域中不可或缺的编程语言。