内联函数和函数重载

Posted cx66

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内联函数和函数重载相关的知识,希望对你有一定的参考价值。

内联函数,是为了解决程序中函数调用的效率问题。函数重载允许程序员定义函数时使用相同的函数名,以不同数据类型的数据作为形参,实现相似功能的函数。

内联函数

调用函数时,系统要将程序当前的一些状态信息、断点信息保存到堆栈中,同时转到被调函数的代码处去执行函数体语句,这些参数保存与参数恢复的过程需要时间和空间开销,使程序执行效率降低。为此才引入内联函数。
内联函数也称为内嵌函数,在使用内联函数时,C++编译器直接将被调函数的函数的代码插入到调用该函数的语句处,在程序运行时不再进行函数调用和返回,从而消函数调用和返回的系统开销,提高了程序执行效率

格式inline  类型标识符  函数名(参数列表)
内联函数的定义与普通函数基本相同,只是在函数定义前加上关键字 inline。

实例

#include<iostream>

using namespace std;

inline double sqr(double x)

{

return x * x;

}

inline double cube(double x)

{

return x * x*x;

}

int main()

{

double x;

cout << "请输入一个数据" << endl;

cin >> x;

cout << "square of" << x << "=" << sqr(x) << endl;

cout << "cube of" << x << "=" << cube(x) << endl;

system("pause");

return 0;

}

技术图片

 

 内联函数不同于一般函数调用,主要体现在是代码替换而不是调用,减少了函数调用时的系统开销,提高了效率

注意:(1)内联函数的函数体内不允许有循环语句和开关 switch语句。如果内联函数内含有这些语句,则按普通函数处理。
           (2)内联函数的函数体内不能包含任何静态变量和数组说明,也不能有递归调用。
           (3)内联函数的函数体中语句不宜过多,一般以1-5行为宜。

函数重载

C++中允许两个或两个以上的函数在定义时重名,但要求函数的参数列表不同,如参数的类型不同、参数的个数不同等。这种共享同名函数的定义称为函数重载。重载函数的意义在于,可以用同一个函数名字定义和调用多个功能相近的函数,编译器能够根据函数参数的具体情况决定调用哪个函数。

实例使用函数重载的方法,设计两个求面积的函数:
 area(float r); //求圆面积,需传递一个参数

area(float x,float y); //求矩形面积,需传递两个参数

#include<iostream>
using namespace std;
const double PI = 3.14159;
double  area(float r)
{
    return (PI*r*r);
}
double  area(float x,float y)
{
    return (x*y);
}
int main()
{
    float r,a,b;
    cout << "输入圆的半径" << endl;
    cin >> r;
    cout << "圆的面积:" << area(r) << endl;
    cout << "输入矩形长宽" << endl;
    cin >> a>> b;
    cout << "矩形的面积:" << area(a, b) << endl;
    system("pause");
    return 0;
}

技术图片

 

 注意:(1)重载函数的区别不能只是函数的返回值不同个,应至少在形参个数,参数类型,参数顺序上有所不同。

            (2)应使所有的重载函数的功能相同。






以上是关于内联函数和函数重载的主要内容,如果未能解决你的问题,请参考以下文章

OOP 1.4 内联函数和重载函数函数参数缺省值

inline内联函数

2C++ 的升级

大话cppC++对函数的补充(函数重载+缺省参数+内联函数)快进收藏夹

C++入门语法第一篇:(命名空间缺省参数函数重载引用内联函数)

C++入门(命名空间缺省参数函数重载引用内联函数)