C++ Primer 读书笔记——函数
来源:互联网 发布:阿里云系统电视root 编辑:程序博客网 时间:2024/05/29 02:25
C++ Primer 读书笔记4
关键概念
- 分离式编译——P186
- 可变形参——P197
void fun(initializer_list<string> il)//initializer_list定义在同名的头文件中{ //initializer_list当做容器处理}fun({"q","w","a"});
initializer_list对象的元素永远是常量值。
- 重载与作用域——P210
如果我们在内层作用域中声明名字,它将隐藏外层作用域中声明的同名实体。在不同作用域中无法重载函数名。
- 内联函数和constexpr函数——P210
内联函数是用空间换时间用于规模较小、流程直接、频繁调用的函数。
- 内联函数和constexpr函数——P210
string read();void print(const string &);void print(double);//重载print函数void fooBar(int ival){ bool read=false;//新作用域:隐藏外层的read string s=read();//错误:read是一个bool值,不是函数 void print(int);//新作用域:隐藏之前的print print("Value:");//错误:print(const string &)被隐藏 print(3.14);//正确:调用print(int);print(double)被隐藏掉了}
- 调试帮助——P215
- 函数指针——P221
注意点
函数中实参是形参的初始值,第一个实参对应第一个形参。但是编译器能以任意可行的顺序对实参求值(实参可以是函数或者表达式)
形参名是可以省略的,未命名的形参无法使用。
函数的返回类型不能是数组类型或者函数类型。
局部静态对象的生命周期贯穿函数调用及之后的时间(函数调用结束后不销毁,程序终止时被销毁)(静态把对象的生命周期提升了一个级别?)——P185
当使用数组作为形参,要防止数组使用的越界。
数组引用形参一定要加括号
void fun(int (&arr)[10]); //正确:arr是具有10个整数的整形数组的引用。void fun(int &arr[10]); //错误:将arr声明成引用的数组。
函数不能反回局部对象的引用或指针。
返回引用的函数得到的是左值其他类型得到的是右值。
在给定作用域中一个形参只能被赋予一次默认实参。
调用重载函数时应该尽量避免强制类型转换。如果在实际应用中确实需要强制转换类型转换,则说明我们设计的形参集合不合理。
函数指针的类型必须与重载函数中的某一个精确匹配。
小技巧
通过使用引用避免拷贝(拷贝大的类类型对象或者容器对象是比较低效的),如果不需要改变形参的值,只需要将其声明为常量引用。
void fun(const int &i){}
C++可以使用尾置返回类型
//func返回一个指针,该指针指向含有10个整数的数组auto func(int i)->int(*)[10];
如果形参是某种类型的指针或引用,通过区分其指向的是常量对象还是非常量对象可以实现函数重载。——P208
函数不能定义函数类型的形参,但是可以定义指向函数的指针,同理可以定义返回指向函数的指针。
将auto和decltype用于函数指针类型
int func1(const int&);int func2(const int&);//根据形参的取值,getFun函数返回指向func1或者func2的指针。decltype(func1) *getFun(const string&);
阅读全文
0 0
- 《C++Primer》读书笔记——第6章 函数
- 《C++Primer》读书笔记--函数模板
- C++ Primer 读书笔记——函数
- primer c++ 读书笔记 —— 函数返回
- 《C++Primer》读书笔记——第一章:开始
- 《C Primer Plus》读书笔记——递归
- 《C++primer》读书笔记1——第十章 函数模板
- 读书笔记——《C Primer Plus》: 利用scanf()函数的返回值
- 《C++Primer》读书笔记(六)函数
- 读书笔记——《C Primer Plus》: 一个例程divisors.c
- C++ primer 读书笔记系列——(4)函数
- 《C++primer》读书笔记——关于const引用
- 《C++primer》读书笔记——指针与typedef
- 《C++Primer》读书笔记——第1章 开始
- 《C++Primer》读书笔记——第4章 表达式
- 《C++Primer》读书笔记——第5章 语句
- 《C++Primer》读书笔记——第7章 类
- 《C++Primer》读书笔记——第8章 IO库
- 笔试题 6
- 【BZOJ】1477 青蛙的约会 扩欧
- 微信小程序,通过事件传递数据
- 编程测试题-小猴子摘桃最多摘多少
- 单词查找树
- C++ Primer 读书笔记——函数
- linux初学者-mail篇
- hdoj 6156 Palindrome Function
- UVA
- C语言运算符优先级
- 冒泡排序
- 阿里编程测试 小猴子的问题
- hdu 3746 kmp next求最小循环节
- 文字排版 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)