C++ Primer 第三版 中文版:深入解析C++语言

需积分: 48 185 下载量 125 浏览量 更新于2024-08-10 收藏 4.41MB PDF 举报
"C++ Primer 第三版,由Stanley B. Lippman和Josée Lajoie合作编写,深入解析C++语言,结合了作者在C++领域的深厚经验和对ISO C++标准的深入理解。本书旨在帮助读者全面、正确地理解和使用C++,纠正可能存在的误解,并提供关于C++新标准的见解。书中详细讨论了C++中的各种概念和技术,包括函数调用、重载函数、命名空间、using声明和指示符等。 在C++中,重载函数允许在同一作用域内使用相同名称但参数列表不同的多个函数。在`func()`函数示例中,`using namespace libs_R_us;`导入了`libs_R_us`命名空间的所有成员,使得`max()`函数的两个不同重载版本在`func()`内部可见。调用`max()`时,根据传入的参数类型,选择合适的重载版本。 命名空间如`basicLib`和`matrixLib`可以用来组织和避免名称冲突。在`display()`函数中,`using basicLib::print;`引入了`basicLib`命名空间的`print`函数,使得在`display()`内部可以直接使用`print`,但不影响其他命名空间中同名函数的可见性。因此,`print(mObj)`的候选函数包括`matrixLib::print(const matrix&)`和由`using`声明引入的`basicLib::print(int)`和`basicLib::print(double)`。而`print(87)`的候选函数则只有`basicLib::print(int)`和`basicLib::print(double)`,因为编译器只考虑当前作用域内的函数。 9.4.2节中,可行函数是指那些参数匹配或可以通过转换与调用实参匹配的候选函数。如果函数参数比实参多,可以使用默认参数。例如,对于`f(5.6)`的调用,`f(int)`和`f(double)`都是可行函数,因为`double`可以转换为`int`,反之亦然。9.3节介绍了不同类型的转换规则,这些规则决定了实参和形式参数之间是否可以进行有效转换。 C++ PREMIER标签表明这是针对高级C++用户的资源,适合有一定C++基础并希望深入学习的读者。该书不仅覆盖了C++的基础,还涵盖了C++标准库和最新标准的内容,是学习和理解现代C++的宝贵资料。