c++里面的函数

来源:互联网 发布:淘宝卖正品aj的店铺 编辑:程序博客网 时间:2024/04/29 01:36

c++里面的函数类型:
1、内联函数
必要性:函数调用需要建立栈内空间,进行参数传递,产生程序执行转移,

这些工作都需要时间开销。有些函数代码短,使用频率高。
如 判断一个数是否是偶数的函数 bool iseven(int n);
内联函数 = 内嵌函数,解决运行效率。
声明为inline,如 inline bool iseven(int n); 编译器看到

inline,为该函数创建一段代码,以便在后面每次碰到该函数的调用都用

相应的一段代码来替换。
“内联”必须在被调用之前声明或定义。
内联函数不能有 while、switch等复杂的控制语句。否则将作普通函数看

待。
递归函数不能做内联函数
内联函数适用于1-5行的函数。
一般定义在写在头文件中。
以后可以用它来代替c中用宏定义函数的不安全做法。
2、递归函数
分直接和间接
直接:自身调用
间接:相互调用 如a调用了b b又调用了a
递归的条件 (1)须有完成函数任务的语句。
  (2)一个确定是否能避免递归的测试,退出递归的条件
  (3)递归调用语句,参数应该逐渐逼近不满足条件,以致最后断绝递归
  (4)先测试,后递归调用。
递归-〉非递归

评价:可读性好,但系统开销太大。根据场合使用。

3、静态函数
讨论范围:一个程序的多个文件。
函数声明和定义默认是extern的。如果 加了static,则限定只能在本文件

有效,不能被其他源文件所用。
好处:允许其他源文件建立使用同名的函数而不冲突
       不能被其他文件使用。
4、构造函数
对象不同于变量,对象是有实际意义的,所以对象必须初始化,对象创建时

自动调用构造函数。它的作用就是完成初始化,可以有多个构造函数,可以

重载。

特殊:无返回类型,函数名同类名一样,不能随意调用,默认存在。
结合使用:带默认参数、重载。
5、析构函数
释放资源
特殊:无参数、无返回类型,函数名 ~类名 ,不能随意调用。对象声明周

期结束时会自动调用,没有重载,默认存在。
以调用构造函数相反的顺序被调用。
6、默认参数值的函数
如果不给定函数参数值,则按默认的来。
声明跟定义分开时,只能在在声明中指定默认参数。
顺序:多个默认参数时 ,只能从右往左定义默认参数。
它与重载的关系:可以将一些重载合并。
如果既有默认参数,又重载,一定要注意不要混了。
默认值限定:全局变量,全局常量,甚至函数。 不可以是局部变量。因为

编译默认值时局部变量的值不定。
7、静态成员函数
定义位置与一般成员函数一样。
与类有关,与对象无关。如果用对象去引用它,用的也只是对象的类型。

8、虚函数
指名某个函数具有多态性:根据类型选择调用哪个函数的能力,用virtual


子类的可以省略。
 只针对类的成员函数
 静态成员函数不能是许函数
 内联函数不能是许函数
 构造函数不能是许函数
 析构函数通常声明为许函数。
 如:void finishwithobject(base * o)
      {
          delete o;
 
       }
9、纯虚函数
表明为不具体实现的虚成员函数。形式: virtual+声明 + =0;

 一个抽象类至少含有一个纯虚函数
10、重载函数
函数名一样。
判定使用哪个函数,靠参数类型!不能靠返回类型判定。
c++通过名字粉碎实现重载。实质名=函数名_参数类型首字母
重载函数功能是一样的。
11、友元函数
类里面声明的函数,标上friend,就可以访问该类的一切成员,它不是这

个类的成员函数,它是类的朋友。一个类的成员函数可以是另一个类的友元


原创粉丝点击