码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-09-03 02:36:14      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:初始化   模板类   type   init   重载   bsp   __line__   编译器   限制   

用实参初始化形参时会忽略掉顶层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__         存放文件编译日期的字符串字面值

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

标签:初始化   模板类   type   init   重载   bsp   __line__   编译器   限制   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!