C++primer 第六章笔记 初稿
2017-03-18 21:29
295 查看
6.1 参数传递
用指针来传递多维数组时,仍然需要传递二维的具体参数;可变形参
initializer_list
个人感觉就是一个容器?
代码如下
class Class1{ public: Class1(int a, initializer_list<int>b){} private: int a; int b; }; class Class2{ public: Class2(int a, int b){} private: int a; int b; }; int main(){ Class1 c1(1,{2}); Class2 c2(1,2); return 0; }
省略号
莫名把赋值与判断合并就会出错,就很气
想来第一个参数还是要的,没见过不加第一个参数的写法
#include <string> #include <iostream> #include <cstdarg> using namespace std; void fun(int n, ...){ va_list vl; va_start(vl,n); int arg; do{ arg = va_arg(vl,int); cout<<arg; }while(arg !=0); cout<<endl; va_end(vl); } int main(){ fun(1,2,3,4,0); fun(1,2,3,0); return 0; }
6.2 return语句
return返回初始化列表也是可以的(初始化列表欢乐多!);using 相比于 typedef 的一大优越
typedef int arr[10];//arr表示长度为10的int数组 using arr = int[10];//等价 arr* f(int i); arr* g(arr &a){ return &a;//值得关注 } int (*p)[10] = f(1);
尾置返回与decltype
一大重要目的是降低阅读难度
尾置返回
int (*f(int i))[5]{}
此函数可被化简为如下简明形式
auto f(int i) -> int(*)[5]
declty
4000
pe
int a[5]; decltype(a) *f(int i){}
6.4 函数重载
顶层const不能作为重载的要素;const_cast在重载中的应用
const string &shorterString(const string &s1, const string &s2) {return s1.size() <= s2.size() ? s1 : s2;} string &shorterString(string &s1, string &s2){ auto &r = shorterString(const_cast<const string&>(s1), const_cast<const string&>(s2)); return const_cast<string &>(r); }
6.5 特殊用途语言
默认实参初始值不一定是字面值,也可以是表达式;
constexpr函数
只能有一条return语句;
可以有形参,但必须也是常量表达式或字面值;
函数内部不允许执行任何操作,但可以有类型别名;
assert 与 NDEBUG
assert:用于判定,为假输出信息并停止程序运行,否则什么也不做;
NDEBUG:定义了即关闭调试状态
形如:#ifndef NDEBUG
几个预处理器定义的用于调试的变量
func存放函数名字
FILE存放文件名
TIME存放编译时间
DATE存放编译日期
6.6 函数指针
int f1(int a, int b){ return a; } int f2(int a, int b){ return b; } int main(){ int (*p[2])(int, int) ={f1, f2}; cout<<p[0](1,2)<<endl; cout<<p[1](1,2)<<endl; return 0; }
相关文章推荐
- C++primer第五版第六章学习笔记
- C++primer 第九章笔记 初稿
- C++Primer学习笔记第六章(6/18)语句
- C++primer 第十章笔记 初稿
- C++primer 第七章笔记 初稿
- C++primer 第五章笔记 初稿
- C++primer 第十五章笔记 初稿
- C++primer学习笔记-第六章语句
- C++primer 第四章笔记 初稿
- C++primer 第十三章笔记 初稿
- C++primer 第三章笔记 初稿
- C++primer 第十四章笔记 初稿
- C++Primer第五版【笔记】——第六章 函数
- C++primer 第二章笔记 初稿
- C++primer 第十六章笔记 初稿
- C++primer 第十一章笔记 初稿
- SQL笔记 第六章
- 《C++PRIMER》笔记20090407
- Modern C++ Design 笔记 第六章 Implementing Singletons(2)
- C++primer 第六章学习小记