7.1 函数定义
笔记:(1)即使形参的类型相同,也必须重复定义。
(2)局部于函数的变量不能与该函数任意形参的名字相同。
(3)接口错误:在传递函数实参时,传递过多,忽略某个实参或传递错误类型的实参。
(4)定义函数必须指定返回类型。
7.2 形参
问题1:不是说函数内部的改变不会改变实参的值吗?为什么指针形参会变?
问题2:对于省略符形参不太明白。
笔记:(1)指针初始化规则:可以将指向const型对象的指针指向非const型对象,但不能将指向非const对象的指针指向const对象。
(2)想要改变实参的值,必须采用引用或者指针的方式绑定。
(3)避免复制,使用引用形参能够提高效率。
(4)当使用引用形参的唯一目的是避免复制实参时,应该使用const。
(5)函数可以通过改变形参的值来改变数组元素的值。
(6)求数组长度的方法:sizeof(ia)/sizeof(*ia);
7.3 return语句
笔记1:千万不能返回局部变量的引用。如:int &min(int a,int b){int mini;...;return mini}是错误的。
笔记2:使用递归时,递归终止条件要注意。
7.4 函数声明
笔记1:设计带有默认实参的函数时,将较少使用默认实参的形参放在前面,较常使用默认实参的形参放在后面。
笔记2:当某个形参具有默认实参时,后面的所有形参都必须具有默认实参,而之前的不用。
7.6 内联函数
笔记1:内联机制适用于优化代码量少的,常被调用的函数。
笔记2:内联函数应在头文件定义。
7.7 类的成员函数
问题:(1)成员函数的函数体可以在类内定义也可以在类外定义怎么理解?
(2)在类的成员函数的定义当中,什么时候使用const,什么时候不用?
笔记:(1)通过对象来调用成员函数。
(2)构造函数名与类名相同。
7.8 重载函数
问题:(1)习题7.34 为什么要使用引用&s来作为形参?
笔记:(1)形参与const形参的等价性只存在于非引用形参,当是引用形参时,两者是不同的。
(2)不能仅仅基于不同的返回类型来实现函数的重载。
(3)整型值不能传递给枚举形参,但枚举形参能够传给整形形参。
(4)注意const是指向指针本身还是指向所修饰的对象。
7.9 函数指针
笔记:(1)指向函数的指针必须在两边加上括号。
(2)引用函数名但又不调用该函数时,将被自动解释为函数指针。
(3)指向不同函数类型的指针不能相互转换。
(4)函数指针必须初始化或者具有零值,否则不能调用函数
(5)指向重载函数的指针类型必须与重载函数精确匹配(返回值还有指向的函数的形参)。
小结:
对于引用和指针的传递还有一些不太明白的地方。需要在应用中逐步完善。不明白的问题应当尽快搞清楚。