[C++学习笔记]--内联函数、函数重载、函数defualt参数

来源:互联网 发布:txt文本听书软件 编辑:程序博客网 时间:2024/05/16 16:23

        内联函数:首先,我们来理解函数调用。当我们定义一个子函数,然后再main函数中调用,这个时候,我们的参数和返回值都是放在栈里面的。如果,这个函数要反复调用很多次,那么程序的开销很大,效率不是很高。这个时候就有了内联函数的概念了。内联函数和一般函数调用不同的是,每一次函数调用的时候编译器会把函数的代码修改后,直接插入调用语句处。这样的缺点是,会增大程序的体积。

        那么内联函数的定义,是在前面加inline。比如:inline int Max(int a, int b) {  if ( a > b) return a;else return b; }  这就是一个内联函数。那么我们在调用的时候,比如,K =  Max(x, y);编译器,就会在调用处,插入:if(x >y)  K = a;else K =b ; 这样的语句。 而不是把参数传入栈,然后再从栈里取出返回值。

 

    函数重载:一个或者多个函数,函数名字相同,但是传入的参数不同,或者类型不同,叫函数的重载。比如

                                         int Max(int a, int b){retrun max};

                                         int Max(float a, float b){retrun max};

                                         int Max(int a, int b,int c){retrun max};

函数重载只在C++中有,优点:让函数命名简单。那么编译器是怎么知道不同的调用呢,是根据传入参数个数的不同和传入参数类型的不同来判断的。要注意的是:函数重载,返回值是什么类型没有影响。但是不能用返回值的不同,参数表的相同来区分函数重载。

    函数defualt参数函数的缺省值,就是在定义函数的时候,可以定义缺省值,在右边不传入值的时候,可以使用缺省值。比如 int cnt(int a, int b = 2, int c = 2); 那么在调用的时候,cnt(2) == cnt (2,2,2);cnt(2,3) == cnt(2,3,2);但是 cnt(2, ,2)非法,只能右边连续缺省。优点:提高程序可扩充性。在我们要增加程序功能,之前我们不用,就可以定义为defualt,等需要用的时候,就修改这个传入参数就行了。

 

   

0 0
原创粉丝点击