函数

来源:互联网 发布:动漫头像下载软件 编辑:程序博客网 时间:2024/05/24 03:59

1.   函数的返回类型不能是数组类型或者函数类型,但可以是指向数组或函数的指针。

2.   局部静态对象static.

3.   指针形参

4.   传引用参数:可以改变实参的值。若无须改变引用形参的值,声明为常量引用。

5.   形参的顶层const被忽略掉。void  fun(const int  i)与void  fun(int i)是一样的。

6.   尽量使用常量引用。int  fun(string &s)不能把const对象、字面值传给普通引用,只能将fun函数作用于string对象上,fun(“hadoop”)错误。应该定义为int  fun(const string  &s)

7.   数组形参:void  fun(const  int *),void fun(const  int[])是等价的。

8.   int  main(int  argc , char *argv[]):argv是个数组,它的元素是指向C风格字符串的指针,其第一个元素指向程序的名字或者空字符串。argc表示数组中字符串的数量。

9.   initializer_list:如果函数的实参数量未知但全部实参的类型相同,可以使用它,定义在同名的头文件中。void fun(inittalizer_list<string> il)  ,fun({“a”,”s”}).

10. 不能返回局部对象的引用或指针。因为函数终止时局部变量的引用将指向不再有效的内存区域。

11.调用一个返回引用的函数得到左值,其它返回类型得到右值。

12.函数可以返回vector<>类型。

13.返回数组指针,方法一:使用类型别名:typedef  int arr[10]; arr*  fun(int  c);方法二: int  (*fun(int i))[10];方法三:使用decltype:int odd[]={};decltype(odd) *fun(){};

14.尾置返回类型:auto fun(int  i) -> int(*)[10]

15.函数重载:函数名相同但是形参列表不同。

16.内联函数,在返回类型前加inline,用于规模小、流程直接、频繁调用。

17.constexpr函数:用于常量表达式的函数,函数的返回类型及所有的形参类型都是字面值类型,若实参是常量表达式则返回类型也是常量表达式。若用非常量表达式调用此函数,则返回值是一个非常量表达式。

18.内联函数和constexpr函数通常通常定义在头文件中。

19.函数指针:bool  (*fun)(const  string & ,string  e);

20.返回函数的指针:方法一:使用类型别名,using  PF =int(*)(int *, int); PF fi(int);方法二: int (*fi(int)) (int* , int);方法三:尾置返回类型:auto fi(int) -> int (*)(int * , int);方法四:int  fi(int *);decltype(fi)  * fun();

0 0