C++primer 第五版 *笔记三 [渣渣进化记]
2015-01-28 14:28
155 查看
【第五章】语句
· continue语句:终止最近的循环中的当前迭代并立即开始下一次迭代(不太懂其用法,以后用到再回来补充)
· try 语句块 和 异常处理
练习:5.25
【第六章】
· const 形参和实参
当实参初始化形参时会忽略掉顶层const
· 尽量使用常量引用:
1、若将例子中的第一个形参定义为普通的 string & 则find_char只能作用于string对象,对find_char("hello world", 'o', ctr)这样的调用在编译时会出错
2、若其他函数它们的形参定义为常量引用,则第二个版本的find_char无法在此类函数中正常使用。若将例子中的第一个形参定义为普通的 string
发生错误,s是常量引用,find_char 只能接受普通引用
· 含有可变形参的函数
initializer_list 形参 :函数的实参数量未知,但实参的类型相同
如果向initializer_list 形参中传递一个值的序列,则必须放在花括号里
· 省略符形参:便于C++访问某些特殊的C代码,只能出现在形参列表的最后一个位置
· 内联函数可避免函数调用的开销,内联函数房子头文件内。用法:在函数的返回类型前面加上关键之inline
· assert(expr) 若表达式为假,输出信息并终止程序。若为真,什么都不做
· NDEBUG 预处理变量
(第六章好多部分直接跳过了,还是那句话…等用到再回来补充…确实不用的话看了也忘了…我尽力了…一个星期才看了1/3 而且后面的是越来越难…头痛…在实验室待了快两个星期,整个人都要崩溃了,感觉人生都好像没有意义了…以后正式进来了咋办……
哎,桑心,还是争取快点把书拉通看一遍
)
· continue语句:终止最近的循环中的当前迭代并立即开始下一次迭代(不太懂其用法,以后用到再回来补充)
· try 语句块 和 异常处理
练习:5.25
#include <iostream> #include <string> int main() { int a, b; double c = 0; while (std::cin>> a >> b) { try { if(b == 0) throw std::runtime_error("error"); c = a / b; std::cout<< c << std::endl; } catch(std::runtime_error err) { std::cout<<err.what()<<"try again? enter y or n"<<std::endl; char c; std::cin >> c; if(!std::cin || c == 'n') break; } } return 0; }
【第六章】
· const 形参和实参
当实参初始化形参时会忽略掉顶层const
void fcn(const int i){} void fcn(int i){} //错误,重复定义了fcn(in
· 尽量使用常量引用:
1、若将例子中的第一个形参定义为普通的 string & 则find_char只能作用于string对象,对find_char("hello world", 'o', ctr)这样的调用在编译时会出错
string::size_type find_char(string &s, char c, string::size_type &occurs)
2、若其他函数它们的形参定义为常量引用,则第二个版本的find_char无法在此类函数中正常使用。若将例子中的第一个形参定义为普通的 string
bool is_sentence(const string &s) { string::size_type ctr = 0; return find_char(s, '.', ctr) ==s.size() - 1 && ctr == 1; }
发生错误,s是常量引用,find_char 只能接受普通引用
· 含有可变形参的函数
initializer_list 形参 :函数的实参数量未知,但实参的类型相同
void error_msg(initializer_list<string> li) { for(auto beg=li.begin(); beg!=li.end(); ++beg) cout << *beg <<""; cout << endl; }
如果向initializer_list 形参中传递一个值的序列,则必须放在花括号里
error_msg({"functionX", expected, actual});
· 省略符形参:便于C++访问某些特殊的C代码,只能出现在形参列表的最后一个位置
void foo(parm_list,...); void foo(...);
· 内联函数可避免函数调用的开销,内联函数房子头文件内。用法:在函数的返回类型前面加上关键之inline
· assert(expr) 若表达式为假,输出信息并终止程序。若为真,什么都不做
· NDEBUG 预处理变量
(第六章好多部分直接跳过了,还是那句话…等用到再回来补充…确实不用的话看了也忘了…我尽力了…一个星期才看了1/3 而且后面的是越来越难…头痛…在实验室待了快两个星期,整个人都要崩溃了,感觉人生都好像没有意义了…以后正式进来了咋办……
哎,桑心,还是争取快点把书拉通看一遍
)
相关文章推荐
- C++primer 第五版 *笔记二 [渣渣进化记]
- C++primer 第五版 *笔记一 [渣渣进化记]
- C++Primer第五版【学习笔记】——第三章 Strings,Vectors,Arrays
- C++Primer第五版【笔记】——第七章 类
- C++primer第五版笔记-第十六章模板与泛型编程
- C++primer第五版第三章学习笔记
- C++primer第五版第一章学习笔记
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++primer第五版第七章学习笔记
- C++primer第五版笔记-第十四章重载运算与类型转换
- C++primer第五版笔记-第十三章拷贝控制
- C++primer第五版第五章学习笔记
- C++Primer第五版【笔记】——第八章 IO库
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++primer第五版笔记-第十五章面向对象程序设计
- C++primer第五版笔记-第九章顺序容器
- C++Primer第五版【笔记】——第六章 函数
- 《C++primer》第五版 第四章 第五章 笔记
- C++primer第五版笔记-第十八章用于大型程序的工具
- C++primer第五版第六章学习笔记