C++面向对象编程:解决二义性与扩展C语言

需积分: 20 5 下载量 51 浏览量 更新于2024-08-23 收藏 4.83MB PPT 举报
在谭浩强的C++学习基础书籍中,"二义性的解决方法"这一章节主要探讨了在C++编程中遇到的一种常见问题——二义性。二义性指的是由于名称冲突或相似性导致编译器难以确定如何执行特定代码的情况。以下是两种常用的解决方法: 1. 用类名限定: 当在类的上下文中调用成员函数时,通过明确指定调用哪个类的成员函数可以消除二义性。例如,`c1.A::f()`或`c1.B::f()`,这里的`A`和`B`是类名,这样编译器就知道应该调用哪个类的`f`函数。 2. 同名覆盖(Overloading): 在C++中,允许在同一作用域内定义多个同名函数,但它们的参数列表不同(如参数数量、类型或顺序)。这样,通过函数的参数特性来决定调用哪个函数。例如,当需要根据具体情况调用`f()`函数时,可以在不同上下文下分别声明A和B类的`f()`,然后根据需要调用对应版本。 书中提到C++的起源和发展历程,从C语言发展到面向对象的C++,是为了克服结构化编程在大型项目中的局限性。C++的设计者AT&T发布了首个预编译器,将C++代码转换为C代码进行编译,这有助于将OOP理念融入C语言。C++的发展版本引入了多重继承、模板、异常处理、命名空间等特性,增强了其作为面向对象语言的灵活性和功能。 C++语言的词法和词法规则对于正确编写代码至关重要。C++的字符集与C语言兼容,包括大小写字母、数字字符和ASCII码字符。C++的单词包括关键字(如`int`、`if`等)、标识符(如变量名、类名等)、运算符、分隔符和注释符。关键字是预定义的命令字,而标识符则是程序员为程序元素命名的工具,遵循特定的命名规则。 理解和掌握二义性的解决方法以及C++语言的基本概念和规则,是学习C++程序设计的基础,尤其是在进行面向对象编程时。通过类名限定和同名覆盖,开发者可以避免编译时的二义性问题,提高代码的可读性和可维护性。同时,熟悉C++语言的演变和语法特性,能够帮助开发者更好地利用这个强大且灵活的编程工具。