“ 在现代程序设计中,C++的特性为高效、灵活的代码编写提供了强大的工具。本文主要探讨了C++中的关键概念:内联函数、函数重载以及函数的默认参数,这些特性极大地丰富了编程语言的功能,提高了代码的复用性和执行效率。”
01
内联函数
C++中的内联函数是一种特殊类型的函数,它在编译时会被直接嵌入到调用它的代码中,而不是像普通函数那样进行函数调用。这种方式可以减少函数调用的开销,提高程序的运行效率。
以下是定义内联函数的语法:
inline 返回类型 函数名(参数列表) {
// 函数体
}
其中,关键字“inline”表示这个函数是一个内联函数。需要注意的是,只有短小精悍的代码才适合使用内联函数。如果内联函数过于复杂,则可能会导致代码膨胀和可读性下降。
另外,在使用类成员函数时,默认情况下编译器会将其视为内联函数。因此,在类定义中声明和实现成员函数时不需要加上“inline”关键字。
1.1、声明内联函数
内联函数必须在定义的时候使用关键字inline修饰,不能在声明的时候使用inline。
// 函数声明时不要使用inline关键字
int mAdd(int x,int y);
int main()
{
cout<<mAdd(100,200)<<endl;
}
// 内联函数在定义的时候使用inline
inline mAdd(int x,int y)
{
return x+y;
}
内联函数 在编译阶段 将内联函数中的函数体替换函数调用处,避免函数调用时的开销。
1.2、宏函数和内联函数的区别
宏函数和内联函数都会在适当的位置进行展开,避免函数调用开销。
• 宏函数在预处理阶段展开,内联函数在编译阶段展开。
• 宏函数的参数没有类型,不能保证参数的完整性;内联函数有参数类型,能保证参数的完整性。
• 宏函数没有作用域的限制,不能作为命名空间、结构体、类的成员;内联函数有作用域的限制,能作为命名空间、结构体、类的成员。
1.3、内联函数的注意事项
1 在内联函数定义的时候加inline修饰。
2 类中的成员函数默认 都是内联函数(不加inline也是内联函数)。
3 有时候就算加上inline也不一定是内联函数,能不能成为内联函数有以下的内联函数条件决定:
◦ 不能存在任何形式的循环语句;
◦ 不能存在过多的条件判断语句;
◦ 函数体不能过于庞大;
◦ 不能对函数取地址。
4 有时候不加 inline 修饰也有可能是内联函数。
5 是不是内联函数 由编译器决定。
也就是说,我们添加inline修饰只是希望这个函数是内联函数,但是能不能成为内联函数由编译器决定。
02
函数重载
2.1、函数重载的概述
C++函数重载是指在一个类中定义多个同名函数,这些函数的参数列表不同(参数数量、类型或顺序等&