C++学习笔记(六)可变形参函数

1)处理不同数量实参的方法
a) 如果所有的实参类型相同,可以传递一个名为initializer_list类型的形参。
b) 如果实参的类型不同,我们可以编写一种特殊的函数,可变参模板
c) 特殊的形参类型。省略符–C语言交互的接口程序。
2)initializer_list 一种标准库类型,特定类型值的数组。需要包含同名的头文件。一种模板类型
3)内联函数
调用函数一般比求等价表达式的值要慢!
大多数机器上,一次函数调用其实包含一系列工作:
a)调用之前需要先保存到寄存器,并在返回时恢复;
b)可能需要拷贝实参
c)程序转向一个新的位置再继续执行;
内联函数可以避免函数调用的开销; 将他在每个调用点上内联的展开;
inline关键字
内联机制用于优化 规模较小,流程直接,频繁调用的函数;
很多编译器都不支持内联递归函数;
4)constexpr 常量表达式
函数的返回类型及所有参数的类型 都是 字面值类型
函数体中有且只有一条return语句
5)调试帮助
基本思想:程序可以包含一些用于调试的代码,但这些代码只在开发程序时使用。
当应用程序编写完成准备发布时,要先屏蔽掉调试代码;
两种预处理功能:assert 和 NDEBUG
assert – 预处理宏 预处理变量 类似于内联函数
assert(expr);
先对expr求值,如果表达式为假,assert终止程序,并输出信息;
表达式为真,则什么处理也不需要;
头文件是 cassert ; 预处理名字 由预处理器而非 编译器管理。因此,使用预处理名字无需提供using声明
很多头文都包含了cassert头文件;意味着没有直接包含cassert也有可能通过其他途径包含在你的程序中;
assert宏,常用检查“不能发生”的条件
如果定义了NDEBUG,则assert什么都不处理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值