C/C++基础----函数

用实参初始化形参时会忽略掉顶层const。

尽量使用常量引用,普通引用会限制所能接受的实参类型,也会给调用者误导。

管理数组实参的3种方法:

  • 数组本身包含一个结束标记
  • 传递指向数组首尾元素的指针
  • 定义一个表示数组大小的形参

可变形参的函数

如果实参类型相同,可用initializer_list模板类型;如类型不同,使用可变参数模板。

初始化列表支持size() begin() end() ,拷贝和赋值不会拷贝元素,而是共享。

返回数组指针

typedef int arrT[10];

using arrT=int[10];

arrT* func(int i);

不用类型别名声明函数

int (*func(int i)) [10];

使用尾置返回类型

auto func(int i) -> int (*) [10];

使用decltype

const重载

顶层const不区分,所以不能重载

底层const可以重载,const对象只能传递给const形参,而非常量对象编译器优先调用非常量的版本。

assert(expr)   NDEBUG

当为真的时候,什么都不做;为假时输出信息并终止程序的执行。

依赖于NDEBUG预处理变量的状态

NDEBUG还可用于编写调试代码

编译器定义的几个有用的变量

__func__           当前调试的函数的名字const char数组

__FILE__           存放文件名的字符串字面值

__LINE__         存放当前行号的整型字面值

__TIME__         存放文件编译时间的字符串字面值

__DATE__         存放文件编译日期的字符串字面值

原文地址:https://www.cnblogs.com/logchen/p/9576054.html