Essential C++第二章 面向过程的编程风格

如何编写函数

相关概念

函数的定义(返回类型、函数名、参数列表、函数体)、函数的声明(函数原型)(返回类型、函数名、参数列表)

调用函数

相关概念

传值方式和传地址方式、局部对象与全局对象、局部作用域、全局作用域以及动态范围(new、delete)

重点

  • 传值方式:所有元素都会被复制,操作的对象之间也没有关系
  • 传地址方式:复制的是对象的地址,对象本身不会被复制,而是直接对所传入的对象进行修改等间接操作,使用&作用符
  • 局部对象:当我们调用一个函数时,会在内存中建立一块特殊区域,称为“程序堆栈“。这块区域提供了每个函数的储存空间,一旦函数完成,这块空间就会被释放掉。
  • reference的声明
int ival = 1024;		//对象,类型为int
int *pi= &ival;			//指针,指向一个int对象
int &rval = ival;		//引用,代表一个int对象

int jval = 4096;		
rval = jval; 				//ival的值也随之改变

pi = &rval;				//注意:此为将rval所代表的对象ival的地址赋值给pi,并未令pi指向ival
  • pointer参数和reference参数主要的差异是:pointer可能不会指向某个实际的对象,当我们提领pointer时,一定要先检查其值并非0;而reference则必定会代表某个对象,且不能再改变对象。
  • 动态内存管理:其分配通过new表达式完成,其释放通过delete表达式完成,不delete则会造成内存泄露

提供默认参数值

重点

默认参数值提供的规则

  1. 默认值的解析操作由最右边开始进行。如果我们为某个参数提供了默认值,那么这一参数右侧的所有参数都必须也具有默认参数值才行。
  2. 默认值只能够指定一次。

使用局部静态对象

相关概念

关键词static

重点

  • 局部对象会在每次调用函数时建立,并在函数结束的同时被弃置
  • 局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在。变量的内容不会在函数每次被调用时就被破坏又被重新建立,换句话说,我们可以返回变量的地址了。

声明inline函数

提供重载函数

相关概念

函数重载机制:参数列表(而非返回类型)不同的两个或多个函数,可以拥有相同的函数名称

定义并使用模板函数

相关概念

  • 函数模板机制:将单一函数的内容与希望显示的各种返回类型绑定起来
  • 函数模板关键字template
template <typename elemType>
void function...

重点

  • 函数模板中 其elemType可以被绑定为内置类型或用户自定义类型
  • 一般而言,如果函数具备多种实现方式,我们可将他重载,其每份实例提供的是相同的通用服务。如果我们希望让程序代码的主体不变,仅仅改变其中用到的数据类型,可以通过函数模板达到目的。

函数指针带来更大的弹性

相关概念

函数指针:用来指向函数,如

const vector<int>* (*seq_ptr)(int);	//参数是int,函数指针名是seq_ptr,返回类型也是一个指针
const vector<int> *pseq = seq_ptr(pos)	//会间接调用seq_ptr所指向的函数

重点

  • 取得函数指针的地址——直接调用函数名
  • 枚举enum

设定头文件

发布了59 篇原创文章 · 获赞 3 · 访问量 1819

猜你喜欢

转载自blog.csdn.net/Felix_hyfy/article/details/98493615