C++基础-(函数)

C++基础

函数

内联函数

  • 内联函数
    • 非常短的函数适合于内联
    • 函数体会到插入到发生函数调用的地方
    • 普通函数调用多次也只有一块内存划分,省空间费时间。内联函数调用几次就占用几次空间,节省时间,同宏一样。
inline void fn()
{
    std::cout<<"hello world"<<std::endl;   
}
int main()
{
    fn();
    fn();
}
  • 内联函数的函数体限制
    1. 内联函数中,不能有结构复杂的结构控制语句
    2. 不能出现递归函数
    3. 内联函数只适合1-5行小函数
  • 内联函数与宏定义
    1. 宏定义可以代替小函数定义,但是有缺陷
    2. 宏只是告诉编译器简单的替代代码,不检查参数类型,
      往往造成语句的实际结果不能代表程序员的意图
      宏的作用可以用内联函数代替:

重载函数

  • 定义:两个以上的函数,取相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪个函数,这就是函数重载。
#include <iostream>
void test()//test_void
{
    std::cout<<"hello world1"<<std::endl;
}
void test(int a)//test_int
{
    std::cout<<"hello world2"<<std::endl;
}
int main()
{
    test();//hello world1
    test(10);//hello world2
}
  • 原函数名和形参类型不一样才可以使用重载函数
void test(int a);
void test(int b);//No

void test(int a);
int test();//No

void test(int a,int b);
void test(int b);//Yes

void test(int a);
void test();//Yes

void test(int a,double c);
void test(int c,double b);//Yes
  • 内联函数的重载顺序
    • 寻找一个严格的匹配,如果找到了就是那个
    • 通过内部转换寻求一个匹配,找到了就用
    • 通过用户定义的转换寻求一个匹配,若能查出有唯一的的一组转换,就用那个函数

递归函数

  • 定义:自调用函数,在函数体
  • 递归函数的评价
    • 递归增加了系统开销
    • 递归的目的是简化程序设计,使程序易读
    • 现代程序设计的目标主要是可读性好
    • 对于嵌入式来说,使用递归要慎重。

参数默认的函数

  • 调用函数时可以不指定该全部参数
  • 为不指定参数赋默认值
void test(int a=100)
{
    std::cout<<"test="<<b<<std::endl;
}
int main()
{
    test();//100
    test(2);//2
}
  • 定义的时候从右向左,调用的时候从左向右依次调用。
void test(int a=100)
{
    std::cout<<"test"<<a<<std::cout;
}
void test()
{
    std::cout<<"test asd"<<std::cout;
}
int main()
{
    test();//error
}
  • virtual与inline的区别
    1. 虚函数:在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。
    2. 内联函数:inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容