C++学习-6-第三篇-20230107

第三篇

ch7 函数

7.1 概述
  • 形参和实参: 在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参.函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。

  • 函数声明

  • 不需指定参数的名字 只需要每个参数的类型
    int abs( int );
    int min( int, int );
    int gcd( int, int );
    函数声明 以及 inline 函数的定义 最好放在头文件中 这些头文件可以被包含 include在每个调用该函数的文件中。

7.2 函数原型(声明和调用)
7.3 参数传递
  • 7.3.1 把参数声明成引用
  • 7 .3.2 引用和指针参数的关系
  • 7.3.3 数组参数 (第一个的指针)
  • 7.3.4 抽象容器类型参数(vector)
  • 7.3.5 缺省实参(char *screenInit( int height = 24, int width = 80, char background = ’ ’ );)
  • 7.3.6 省略号 ellipsis
    它们的出现告知编译器 当函数被调用时 可以有 0 个或多个实参 ,而实参的类型未知 ,省略号有下列两种形式:
    void foo( parm_list, … );
    void foo( … );
    第一种形式为特定数目的函数参数提供了声明 在这种情况下 ,当函数被调用时, 对于与显式声明的参数相对应的实参进行类型检查, 而对于与省略号对应的实参则挂起类型检查,在第一种形式中 参数声明后面的逗号是可选的。
7.4 返回一个值(引起函数的强制结束)
  • 如果返回值是一个大型类对象 用引用 或指针 返回类型比按值返回类对象效率要高得多
  • Matrix:矩阵
7.5 递归
7.6 inline函数(针对调用函数很慢的问题)
  • 若一个函数被指定为 inline 函数 则它将在程序中每个调用点上被 内联地 展开。例如
    int minVal2 = min( i, j ); 在编译时被展开为
    int minVal2 = i < j << i : j; 把 min()写成函数的额外执行开销从而被消除了。
  • 建议把 inline 函数的定义放到头文件中
7.7 链接指示符:extern"C"
  • 程序员用链接指示符 linkage directive 告诉编译器 该函数是用其他的程序设计语言编写的 链接指示符有两种形式 既可以是单一语句 single statement 形式 也可以是复合语句 compound statement 形式
    // 单一语句形式的链接指示符
    extern “C” void exit(int);
    // 复合语句形式的链接指示符
    extern “C” {
    int printf( const char* … );
    int scanf( const char* … );
    }
    // 复合语句形式的链接指示符
    extern “C” {
    #include < cmath >
    }
7.8 main():处理命令行选项
7.9 指向函数的指针※(自己写一个sort()函数)

ch8 域和生命期

8.1域(用来区分名字含义的一般上下文)
  • 局部域 local scope
  • 名字空间域 namespace scope
  • 类域 class scope
8.2 全局对象和函数
8.3 局部对象
8.4 动态分配的对象
8.5名字空间定义※
8.6 使用名字空间成员※

ch9 重载函数

◆9.1 重载函数声明
9.2重载解析的三个步骤
◆9.3 参数类型转换※
◆9.4 函数重载解析细节

ch10 函数模板

10.1函数模板定义
10.2函数模板实例化
10.3模板实参推演※
10.4显式模板实参※
10.5 模板编译模式※
10.6模板显式特化※
10.7重载函数模板※
10.8考虑模板函数实例的重载解析※
10.9模板定义中的名字解析※
10.10名字空间和函数模板※
10.11函数模板示例

ch11 异常处理

11.1抛出异常
11.2 try块
11.3 捕获异常
11.4异常规范
11.5异常与设计事项

ch12 泛型算法

12.1概述
  • 要使用泛型算法 我们必须包含相关的头文件#include < algorithm>
  • 如果要使用以下四个算术算法 adjacent_difference() accumulate() inner_product()以及partial_sum() 则必须包含#include < numeric>
  • 所有泛型算法的前两个实参都是一对 iterator 迭代器 通常称为 first 和 last 标记出 内置数组或容器中要操作的元素的范围
12.2使用泛型算法
12.3 函数对象
12.4 回顾iterator
◆12.5泛型算法
◆12.6何时不用泛型算法

猜你喜欢

转载自blog.csdn.net/weixin_45783317/article/details/128541093