您的位置:首页 > 编程语言 > C语言/C++

C++ Primer 5e chapter 6

2015-08-20 19:30 302 查看
1、函数无法返回数组,可以返回数组的指针;

2、函数参数传递方式,引用传递,值传递,(指针传递类似于值传递,局部拷贝改变不改变实体),引用或者常引用是比较合适的方法;

3、传递参数忽略顶层const,也就是说形参是const,实参可以传递const或者非const;同时由于形参忽略const,所以不能如此重载一个函数,重定义;

4、可变形参的函数:类型相同时,可以传递initializer_list标准库类型,类似于vector,传递它后可以用它的迭代器访问不同的个数的形参;

5、省略符形参,void foo(int i , ...);

6、返回值为引用类型的时候,注意该引用所引用的对象,在函数执行完后应该还继续存在,不要返回局部对象的指针或是引用;

7、引用函数可以返回左值,其余均为右值;

8、尾置返回类型:auto func(int i) ->int(*)[10],等价于int (*func(int i))[10];还可以使用decltype;

9、函数重载不允许除了返回值,其他均一致;

10、默认实参,含有默认实参的时候,调用可以省略该实参,注意1一个形参有默认值,其后面的都得有,2调用的时候也是一样,要使用一起使用;

11、inline关键字,编译器可以忽略该请求;

12、C++11,constexpr 函数 constexpr int foo(),注意函数的返回值以及所有形参都是字面值类型,函数体中有且只有一条return语句;编译器可以在编译之前确定其值,;

13、assert(),预处理宏,表达式为真,什么都不做,为假,输出信息停止运行,用于检查程序的输入合法性;用于验证那些的确不可能发生的事情;

14、NDEBUG预处理变量,assert行为依赖于NDEBUG变量,如果定义了该变量,assert则什么都不做,没定义,则会进行检查;

15、添加调试代码,利用 #ifdef NDBUG #endif;

16、调试信息,__func__ __TIME__ LINE DTAE FILE等等;

17、重载函数尽量不要使用强制类型转换;

18、函数指针由返回值和形参列表决定,将函数名直接改为 *pf;

19、不能传递函数形参,但是可以传递函数指针的形参;

20、不能返回一个函数类型,但是可以返回一个指向函数的指针; using pf = int(*) (int ,int *);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: