java基础改学C++(三)函数:内置函数,函数模板,默认参数函数

 //内置函数,函数模版,默认参数函数

 

1.内置函数

    调用函数时需要一定的时间和空间的开销. C++提供一种提高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内置函数(inline function),又称内嵌函数(内联函数)。

    在函数首行的左端加一个关键字inline即指定为内置函数.内置函数可以节省运行时间,但却增加了目标程序的长度。内置函数中不能包括复杂的控制语句,如循环语句和switch语句(其实可以包含,但是编译系统不会那样执行,因为:对函数作inline声明,只是程序设计者对编译系统提出的一个建议,也就是说它是建议性的,而不是指令性的。并非一经指定为inline,编译系统就必须这样做。编译系统会根据具体情况决定是否这样做。一般只将规模很小(5个语句以下)而使用频繁的函数(如定时采集数据的函数)声明为内置函数)

 

2.函数模版  template,意为模型,样板

    函数模板的概念可以通过例子理解,直接看文字不容易理解:实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。仔细看下面的例子,研究下套路

    //2.1  定义模版:

template<typename T>    // T是虚拟类型名,想象为 int 或 double

//可以定义很多个模版:  template<typename T,typename T2,class T3>

    //2.2  把T看作 double理解这个函数,再跳出来看T就轻松了!

T max(T a,T b,T c){

    if (b>a)  a = b;

    if (c>a)  a = c;

    return a;

}

int main(){

    

    int i1=185,i2=-76,i3=567;

 

    double d1=56.87,d2=90.23,d3=-3214.78;

 

    long g1=67854,g2=-912456,g3=673456;

    

    int i;

    long g;

    double d;

    

    cout<<(i =max(i1, i2, i3));

    cout<<(d =max(d1, d2, d3));

    cout<<(g =max(g1, g2, g3));

 // 是不是发现了套路?

 

    //2.3 编译系统会将函数名max与模板max相匹配,将实参的类型取代函数模板中的虚拟类型 T,相当于已定义了一个函数

    

3. 有默认参数函数,如果函数定义在调用之后,在声明时候指出默认参数,如果函数定义在调用之前,则在定义时指出。注意指定默认值的参数们必须放在形参表列中的最右端,一个函数不能既重载又有默认参数,可能二义。

    int square(int x = 10);

    cout<<square(12);

    cout<<square();

    //其实,刚输入squ时候,IDE就提示有俩函数,一个有参一个无参,不同的IDE可能提示的不一样

 

 int square(int y){

    return y*y;

}

 

// 所有用到的函数,在最前面声明,在最后面写实现,养成习惯。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值