带默认值函数 内敛函数 函数重载

  1 带默认值参数的函数: 首先,默认值参数的传递是自右向左,默认值参数并不影响压栈指令的生成(push指令); 若默认值参数是立即数,则是否带默认值参数的效率无差别,带默认值参数的函数压栈的时候永远压的是立即数; 若实参传的是变量,首先CPU要从内存中获取变量,存在寄存器(eax)中,在从寄存器中对数据进行处理操作。比带默认值的参数的效率慢。



2 inline 函数

因为函数的调用开销(各种压栈,出栈过程),在栈帧开辟及回退的过程。作用域:在本文件可见(文件生存周期)

inline 在使用时不产生符号

static 在使用时产生函数符号,链接时产生global的符号(本地文件符号local)

inline 在另一文件中编写,无法访问到函数符号,导致符号解析出错,链接失败。所以inline函数不能分文件写。问题在编译阶段出现,在吧函数代码展开之后。最终,inline只是对编译器的建议,最终是否使用由编译器决定。在release的开发版本之下,inline是可调式的(方便调试)。debug版本下,inline不起作用。


3函数重载

不同环境:gcc环境下,产生的函数符号由函数名进行实现

              g++环境下,函数符号由函数名+参数列表共同构成

函数重载:函数名相同,参数列表不同,不能仅由返回值类型区别重载;函数重载要处于同一作用域,不同作用域下的函数重载无意义(同一作用域下要满足第一条才能称作函数重载);调用时,由传入实参的类型以及个数进行决定,函数重载较为方便;函数重载是C++中静多态的一个设计

猜你喜欢

转载自blog.csdn.net/lzmain/article/details/78267951