C++面向对象:虚基类的作用与C++发展历程

需积分: 13 2 下载量 147 浏览量 更新于2024-08-24 收藏 5.27MB PPT 举报
"虚基类的作用-C++面向对象程序设计(谭浩强版)" 在C++面向对象程序设计中,虚基类的概念是解决多继承中可能出现的问题的关键。当一个类从多个基类继承,而这些基类又共享了一个共同的基类时,如果没有采用虚基类,那么在派生类中就会出现这个共同基类的多个副本,这被称为“菱形问题”。例如,类B和类C都继承自类A,然后类D继承自B和C,如果不使用虚基类,类D中就会有两个A的实例。这种情况下,不仅浪费了内存,还可能导致命名冲突和二义性问题。 虚基类的引入解决了这个问题。通过在声明派生类时使用`virtual`关键字指定基类为虚基类,如`class D : virtual public B, virtual public C`,C++编译器会确保派生类D中只包含一个类A的实例。这样,即使类B和类C都继承自类A,类D也不会重复包含A的成员,从而避免了多份拷贝和潜在的冲突。 C++的面向对象特性包括封装、继承和多态。继承是面向对象编程的基础,它允许创建新的类(派生类)来扩展或修改现有类(基类)的功能。而虚基类是多继承环境下的一个重要特性,它确保了多继承的正确性和效率。 C++语言的词法和词法规则是程序设计的基础。C++的字符集与C语言基本相同,包括字母、数字和其他ASCII字符。关键字是预定义的特殊单词,如`int`、`float`、`if`等,它们在程序中有特定含义。标识符是程序员为程序元素起的名字,遵循特定的命名规则。运算符代表各种操作,如算术运算符`+`、`-`、`*`、`/`,逻辑运算符`&&`、`||`,以及关系运算符`==`、`!=`等。分隔符如逗号、分号用于区分语句和表达式,注释符`//`和`/*...*/`用于添加程序的说明性文本。 C++的发展历程也是一个重要的知识点。C++起源于C语言,最初作为C的扩展,增加了面向对象的特性。随着版本的升级,C++逐渐加入了类的多重继承、模板、异常处理和命名空间等特性,最终在1997年,ANSI发布了C++的标准,使得C++成为了一种强大且标准的面向对象编程语言。学习C++意味着可以同时掌握面向过程和面向对象的编程方法,以适应不同的编程需求。